mar*_*rco 3 javascript arrays merge sum
我有2个数组:
var array1 = [[5,10],[6,10],[7,10],[8,10],[9,10]];
var array2 = [[1,10],[2,10],[3,10],[4,10],[5,40],[6,40]];
Run Code Online (Sandbox Code Playgroud)
想要获得1个合并数组与相应键的总和;
var array1 = [[1,10],[2,10],[3,10],[4,10],[5,50],[6,50],[7,10],[8,10],[9,10]];
Run Code Online (Sandbox Code Playgroud)
两个阵列都有唯一的密钥,但需要对相应的密钥求和.
我试过循环,concat等,但无法得到我需要的结果.
有人这样做过吗?
小智 6
您可以使用.reduce()传递跟踪找到的集合的对象,并进行添加.
演示: http : //jsfiddle.net/aUXLV/
var array1 = [[5,10],[6,10],[7,10],[8,10],[9,10]];
var array2 = [[1,10],[2,10],[3,10],[4,10],[5,40],[6,40]];
var result =
array1.concat(array2)
.reduce(function(ob, ar) {
if (!(ar[0] in ob.nums)) {
ob.nums[ar[0]] = ar
ob.result.push(ar)
} else
ob.nums[ar[0]][1] += ar[1]
return ob
}, {nums:{}, result:[]}).result
Run Code Online (Sandbox Code Playgroud)
如果需要对结果进行排序,请将其添加到结尾:
.sort(function(a,b) {
return a[0] - b[0];
})
Run Code Online (Sandbox Code Playgroud)