我有一个对象数组,想要返回所有 id
的数组。例如:
const arr = [
{Locations:[{id:2129, Name: 'testAA'}, {id:3431, Name: 'testAB'}, {id:4373, Name: 'testAC'}]},
{Locations:[{id:2545, Name: 'testBA'}, {id:3431, Name: 'testBB'}]}
];
我可以为您提供以下翻译结果:[2129, 3431, 4373, 2545, 3431]
我尝试过以下方法:
arr.map((value) => {
let newarray = [];
return newarray += value['Locations'].map(ID => ID.id);
});
这将返回:
["2129,3431,4373", "2545,3431"]
如何将这两个数组合并?
flatMap
是正确的工具(但如果浏览器兼容性不允许,那么[].concat()
是一个很好的flatMap
替代方案)。由于...acc
,这看起来像是二次时间复杂度。 - undefinedconcat
在每次迭代时做的事情是一样的——不幸的是,它会创建一个全新的数组。如果你必须使用reduce
,很重要的一点是return a;
,这样结果数组就不会被重建arr.length
次。但是这样看起来非常丑陋,表明reduce(...., [])
是一种反模式(应该使用map
)。如果需要兼容性,可以参考Mamum的答案或者我的答案。请随意进行基准测试。 - undefined