search

Home  >  Q&A  >  body text

javascript - js 数组对应相加

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

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

PHPzPHPz2902 days ago397

reply all(1)I'll reply

  • PHP中文网

    PHP中文网2017-04-10 14:54:30

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

    javascriptvar a = [1,2,3]
    var b = [5,7,9]
    
    var c = a.map(function(v, i) {
        return v + b[i]
    })
    
    // [3,9,12]
    

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

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

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

    javascriptfunction 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)
    // [3,9,12,10]
    

    reply
    0
  • Cancelreply