我想合并两个具有相同键值的不同对象数组。
这是我的两个对象数组。
arr1 = [{id:1,name:'amit',age:23},{id:2,name:'akash',age:24},{id:3,name:'arun',age:22}];
arr2 = [{id:1, add : 'india'},{id:3, add:'india'},{id:2,add:'india'}];
我想将这两个数组合并为一个包含完整数据的数组。
arr3 = [{id:1,name:'amit',age:23, add:'india'},{id:2,name:'akash',age:24, add:'india'},{id:3,name:'arun',age:22,add:'india'}];
我尝试这样做,但无法获得理想的结果。
var arr3 = _.map(arr1, function(item){
return _.extend(item, _.findWhere(arr2, { id: item.id }));
});
可能会有一些空数组可能会导致更改。 我想避免两个for循环,然后一个条件,因为它会增加复杂性。如果有人有更好的解决方案。 提前谢谢。
答案 0 :(得分:0)
这将产生预期的结果
_.each
将迭代arr3
并执行操作。
// copies arr1 to arr3
var arr3 = Array.from(arr1);
_.each(arr3, (item) => {
// extends another object to the current object (item from arr3)
_.extend(item, _.find(arr2, (a) => a.id == item.id));
})
我们将在arr3
答案 1 :(得分:0)
您可以使用loadash merge
var arr3 = _.merge(arr1, arr2)