添加两个数组并返回一个新数组

时间:2016-05-19 18:54:03

标签: javascript

编写一个函数addArrays,它接受2个数字数组作为参数,并返回一个新数组,其中相同索引位置的元素被加在一起。例如:addArrays([1,2,3],[4,3,2,1]); // => [5,5,5,1]

我正在尝试使用嵌套for循环,但它给出了错误的答案....

  function addArrays(num1, num2){
      var result = [];
      for(var i=0; i< num1.length; i++){
        for(var j=0; j<num2.length; j++){
          result.push(num1[i] + num2[j]);
      }
      }
      return result;
    }

4 个答案:

答案 0 :(得分:4)

我建议只使用一个循环检查长度,如果元素不存在则使用一些默认值。

&#13;
&#13;
function addArrays(array1, array2) {
    var i,
        l = Math.max(array1.length, array2.length),
        result = [];
    for (i = 0 ; i < l; i++) {
        result.push((array1[i] || 0) + (array2[i] || 0));
    }
    return result;
}

console.log(addArrays([1, 2, 3], [4, 3, 2, 1]));
&#13;
&#13;
&#13;

答案 1 :(得分:2)

无需嵌套2个循环。如果您有2维数组,则使用数组的嵌套循环。

function addArrays(num1, num2){
    var result = [];
    var size = Math.max(num1.length, num2.length);

    for(var i = 0; i < size; i++){
        result.push(num1[i] + (num2[i]);

    }
    return result;
}

如果数组的长度不同,你也可以将它默认为0,你就像这样

(num1[i] || 0) + (num2[i] || 0)

这会选择数组中的数字,如果不存在则选择0

答案 2 :(得分:0)

function addArrays(num1, num2){
      var result = [];
      for(var i=0; i< num1.length; i++){
          result.push(num1[i] + num2[i]);
      }
      return result;
}

答案 3 :(得分:0)

对于那些在性质上更进步的人......

let a = [1, 2, 3], b = [4, 3, 2, 1], l = Math.max(a.length, b.length)
const addArrays = ((a[l-1]) ? a : b).map((v, k) => (a[k] || 0) + (b[k] || 0))

console.log(addArrays) // [ 5, 5, 5, 1 ]