通过索引值按数组中的不同值合并两个数组 [英] Merge two arrays by index value by different value in the array
本文介绍了通过索引值按数组中的不同值合并两个数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个数组,我想将两个数组的值合并为一个数组,但是两个数组都有不同的值.
I have two arrays and I want to merge the values of the two arrays into a single array, but both arrays have different values.
示例:
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重复时它合并了第一个值:
I tried this it, will work fine when data1 is unique, but the problem is when data1 is repeating it merges the first value:
var data = _.map(arr1, function(item){
return _.extend(item, _.findWhere(arr2, { dataid: item.dataid }));
});
推荐答案
您可以使用map()
并在同一索引上合并第一个和第二个数组的属性.
You can use map()
and merge the properties of first and second array on same index.
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)
这篇关于通过索引值按数组中的不同值合并两个数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文