Javascript 双精度,用于将循环转换为单行代码

Javascript 双精度,用于将循环转换为单行代码,javascript,Javascript,是否可以从下面的代码片段中生成一行代码?差不多 Object.values(data).map(v=>v.map(v=>v.id)) let div=document.getElementById(“foo”); 常数数据={ 项目:[{id:1}], 另一个:[{id:3},{id:10}], } 设id=Object.values(数据); 用于(id的常量foo){ 用于(foo的常数条){ div.append(bar.id+“,”),而不是div.append应该是“

是否可以从下面的代码片段中生成一行代码?差不多

Object.values(data).map(v=>v.map(v=>v.id))
let div=document.getElementById(“foo”);
常数数据={
项目:[{id:1}],
另一个:[{id:3},{id:10}],
} 
设id=Object.values(数据);
用于(id的常量foo){
用于(foo的常数条){
div.append(bar.id+“,”),而不是div.append应该是“return bar.id;”
}
}

请针对“更大”的阵列测试此代码

let data={item:[{id:1}],另一个:[{id:3},{id:10}]},
结果=对象。键(数据)。减少(函数){
s、 push(数据[a].map(v=>v.id));
返回s;
}, []);

console.log([].concat.apply([],result))是否尝试展平生成的数组?在这种情况下,您可以尝试:

Object.values(data).reduce((a, b) => a.concat(b)).map(e => e.id)

演示片段:
const数据={
项目:[{id:1}],
另一个:[{id:3},{id:10}]
} 
console.log(
Object.values(data).reduce((a,b)=>a.concat(b)).map(e=>e.id)
)

.as console wrapper{min height:100vh;}
给定问题对象的两个属性,您可以使用对象分解、扩展元素

const数据={
项目:[{id:1}],
另一个:[{id:3},{id:10}],
} 
让id=[…data.item,…data.other].map(({id})=>id);

控制台日志(ids)
Object.values(data.map)(foo=>foo.map(bar=>bar.id))有什么问题?预期结果是什么?@DanPrince它返回一级数组:(;我得到的结果是[array(100)、array(13)、array(40)]。预期结果应该是来自array(100)、array(13)、array(40)的所有id值,因此它将返回153个id。|编辑:来自单行查询的id实际上也未定义。
.map()
只是一个专门的
.reduce()
,所以直接使用
.reduce()
并构建最终结果:
对象.值(数据).reduce((a,v)=>a.concat(v.map(v=>v.id)),[])
脱离主题,但不要使用
someNode.append()之类的东西
someNode.innerHTML+=
重复,就像在循环中一样。最好将值累积在字符串中(或者在文档片段中,如果您处理DOM节点),然后立即添加它们。事实上,这就是我一直在寻找的,甚至尝试使用
对象。分配
:oGlad这很有帮助!祝您的项目的其余部分好运。