js 数组对应相加

var arr1 = [1,2],
    arr2 = [3,4];

我希望得到一个新的数组是 arr = [4,5] 也就是 arr[0] = arr1[0]+arr2[0] 以此类推。我现在只能想到循环的方式,求其他方法。

阅读 12.7k
1 个回答

既然不想用循环,那递归也是方法之一,也可用 map()

var a = [1,2,3]
var b = [5,7,9]

var c = a.map(function(v, i) {
    return v + b[i]
})

// [6,9,12]

既然有了这个思路,试试 forEach() 怎么样

var a = [1,2,3]
var b = [5,7,9]
var c = []
a.forEach(function(v, i) {
    c.push(v + b[i])
})

// [6,9,12]

然后,封装成一个函数,顺便处理数据长度不一致的情况

function merge(a, b) {
    if (b.length > a.length) {
        var t = a
        a = b
        b = t
    }

    return a.map(function(v, i) {
        return v + (b[i] || 0)
    })
}

var a = [1,2,3]
var b = [5,7,9,10]
var c = merge(a, b)
// [6,9,12,10]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题