【发布时间】:2019-04-07 20:44:00
【问题描述】:
如果我有两个这样的对象数组
const x = [{id: 1, a: 5}, {id: 2, a:10}, {id: 3, a: 12}];
const y = [{id: 4, a: 0}, {id: 2, a: 0}, {id: 3, a: 0}];
输出应该是一个代表y的新数组
但是经过一些修改,如果 y 中的一个项目有一个 id 匹配 x 中的一个项目,a 的值应该与 x 相同,所以输出应该是
[{id: 4, a: 0}, {id: 2, a: 10}, {id: 3, a: 12}]
这是我的解决方案
const z = [...y];
z.forEach(el => x.map(ele => el.a = el.id === ele.id ? ele.a : el.a));
这是我在项目中所做的一个简单实现,我关心性能,我看到克隆数组 z = [...y] 的步骤可能很昂贵,所以我正在寻找一个使用返回新函数的解决方案数组map, filter, reduce...,
我尝试了嵌套的 map 和 filter、find ...但我以复杂的解决方案结束,那么是否有其他解决方案可以同时更高效、更简单?
【问题讨论】:
标签: javascript functional-programming