如何合并具有相同键值的两个不同对象数组

时间:2018-02-07 04:40:18

标签: javascript arrays reactjs object

我想合并两个具有相同键值的不同对象数组。

这是我的两个对象数组。

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循环,然后一个条件,因为它会增加复杂性。如果有人有更好的解决方案。 提前谢谢。

2 个答案:

答案 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)