【发布时间】:2016-10-22 20:08:03
【问题描述】:
我有 2 个二维数组
var arr1 = [
[1, 'a'],
[2, 'b']
]
var arr2 = [
[3, 'a'],
[5, 'c']
]
我想将这两个数组相加得到这个结果
var output = [
[4, 'a'],
[2, 'b'],
[5, 'c']
]
我尝试编写 2 个 .map 函数,但连同所需的结果,这将返回很多重复项:
function sumArrays (arr1, arr2) {
var output = [];
arr2.map(function(i) {
arr1.map(function(n) {
if (i[1] === n[1]) {
output.push([i[0] + n[0], i[1]])
} else {
output.push(i)
}
})
})
return output;
}
有没有更简单的方法可以做到这一点,或者我现在应该删除除特定字符串的最高值之外的所有内容?
感谢您的帮助。
【问题讨论】:
-
你想得到一个包含组合结果的新数组吗?
-
我需要返回两个数组的总和。我可以通过修改现有的或返回一个新的来做到这一点。
-
使用地图会更容易,如
{a : 4, b : 2, c : 5} -
arr1.concat(arr2).reduce((a,b)=>{return b[1] in a?a[b[1]]+=b[0]:a[b[1]]=b[0],a;},{});
标签: javascript arrays