【问题标题】:I am just wondering what is going wrong with my code of adding 2 arrays in javascript我只是想知道我在 javascript 中添加 2 个数组的代码出了什么问题
【发布时间】:2021-06-29 11:42:16
【问题描述】:

我试过了

var arr1 = [1, 2, 3, 4, 5];
var arr2 = [2, 3, 4, 5, 6];
var sum = [];
for (var i = 0; arr1[i] < arr1.length; i++) {
  for (var j = 0; arr2[j] < arr2.length; j++) {
    sum = sum.push(arr1[i] + arr2[j]);
  }
}

console.log(sum);

找到了正确的解决方案,但是试图了解我的代码哪里出错了。它说 sum 没有定义。

请告诉我,否则任何裁判也会有好处。 谢谢大家

【问题讨论】:

  • sum = sum.push(arr1[i] + arr2[j]); - push() 方法返回数组的新 长度。不返回数组。
  • 你用sum.push()的返回值覆盖sum,push改变了数组,它不会返回一个新数组。
  • 请添加想要的结果。
  • 你不需要做sum = sum.push()sum.push() 自己会添加项目到数组中,你不需要设置变量。

标签: javascript arrays loops


【解决方案1】:

Array.push 不返回新数组。它修改给定的数组。所以基本上你只需要改变:

 sum = sum.push(arr1[i] + arr2[j]);

收件人:

sum.push(arr1[i] + arr2[j]); //without the assignment

它应该可以工作!

【讨论】:

    【解决方案2】:

    假设您想要一个新数组,其中每个值的总和位于同一索引处,您可以采用一个循环并在同一索引处添加值。

    Array#push返回数组的新长度,与推送的值无关。

    var arr1 = [1, 2, 3, 4, 5],
        arr2 = [2, 3, 4, 5, 6],
        sum = [];
    
    for (var i = 0; i < arr1.length; i++) {
        sum.push(arr1[i] + arr2[i]);
    }
    
    console.log(sum);

    【讨论】:

      【解决方案3】:

      Array.push 正在改变原始数组。 And it will return length of updated array。所以当第一次调用2 时,sum 是数字而不是数组。这就是你出错的原因

      所以不应该重新分配sum = sum.push

      var arr1 = [1, 2, 3, 4, 5];
      var arr2 = [2, 3, 4, 5, 6];
      var sum = [];
      for (var i = 0; arr1[i] < arr1.length; i++) {
        for (var j = 0; arr2[j] < arr2.length; j++) {
          sum.push(arr1[i] + arr2[j]);
        }
      }
      
      console.log(sum);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-27
        • 2019-04-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多