【发布时间】:2019-01-13 19:36:27
【问题描述】:
假设我有以下两个数组:
let arr1 = [ { id: "1234567890", name: "Someone", other: "unneeded", props: 123 } ... ];
let arr2 = [ { id: "1234567890", points: 100, other: "unneeded", props: 456 } ... ];
我需要根据 id 的名称和点数将它们组合起来,如下所示:
[ { id: "1234567890", name: "Someone", points: 100 } ... ]
一种选择是像这样映射它们:
let final = arr1.map(u => ({
id: u.id,
name: u.name,
points: arr2.find(uu => uu.id === u.id)
}));
但是,这对于较大的数组(数千个条目)来说效率很低,因为find() 每次都会遍历数组。我正在努力提高效率。我阅读了Array.reduce(),但这似乎不是答案(除非我错了)。我该怎么做?
【问题讨论】:
-
这里的组合逻辑是什么?
-
@Ashish 如最终数组的示例所示,我想通过
id“合并”name和points -
id 总是整数吗?
-
@TommiTuura 已编辑,应该是一个字符串,但是是的,它永远是一个字符串
标签: javascript arrays node.js mapreduce