0

我有两个数组,我想将两个数组的值合并到一个数组中,但是两个数组都有不同的值。

例子:

var arr1 = [
            { data1: 1 ,data2: "value1"},
            { data1: 1 ,data2: "value2"},
            { data1: 2, data2: "value3"},
            { data1: 3 ,data2: "value3"},
            { data1: 3 ,data2: "value3"}
          ];
var arr2 = [
            { data1:1, data3:"val1"}, 
            { data1: 1, data3: "val2"},
            { data1: 2, data3: "val1"},
            { data1: 3, data3: "val1"},
            { data1: 3, data3: "val2"}
           ]; 
var arr3 = [
             { data1:1, data2: "value1", data3:"val1"}, 
             { data1: 1, data2: "value2", data3: "val2"},
             { data1: 2, data2: "value3", data3: "val1"},
             { data1: 3, data2: "value3", data3: "val1" },
             { data1: 3, data2: "value3", data3: "val2" }
           ];

我试过了,当 data1 是唯一的时会正常工作,但问题是当 data1 重复时它会合并第一个值:

var data = _.map(arr1, function(item){
                return _.extend(item, _.findWhere(arr2, { dataid: item.dataid }));
           });
4

1 回答 1

1

您可以map()在同一索引上使用和合并第一个和第二个数组的属性。

var arr1 = [ { data1: 1 ,data2: "value1"}, { data1: 1 ,data2: "value2"},{ data1: 2, data2: "value3"}, { data1: 3 ,data2: "value3"}, { data1: 3 ,data2: "value3"} ]; 
var arr2 = [ { data1:1, data3:"val1"}, { data1: 1, data3: "val2"}, { data1: 2, data3: "val1"}, { data1: 3, data3: "val1"}, { data1: 3, data3: "val2"} ];

const res = arr1.map((x,i) => ({...x,...arr2[i]}));
console.log(res)

于 2019-05-23T06:43:17.603 回答