有人会介意帮助我理解为什么我的功能没有产生正确的结果吗?

时间:2015-09-28 12:38:28

标签: javascript arrays sum

我想在同一个索引位置找到JavaScript中两个数组的总和(例如arr1 [0] + arr2 [0],arr1 [1] + arr2 [1],...)。我创建了一个函数来执行此操作但由于某种原因它只是正确添加第一个数组条目。这是代码:

var nums = [566646, 71109, 630748, 804254, 672665, 266232, 127182];
var nums2 = [951445, 884541, 171744, 721337, 609206, 237856, 290200];
var numsLength= nums.length;
var i;
var sum = 0;

function test() {
    for(i=0; i < numsLength; i++) {
        sum += (nums[i] + nums2[i]);
        console.log(sum);
    };
}


test();

4 个答案:

答案 0 :(得分:0)

如果你想为每个数组索引打印总和,你不需要累积为sum+=,总和每次都会改变,你所做的是累积的

index0 > sum = arr1[0] + arr2[0]
index1 > sum = arr1[0] + arr2[0] + arr1[1] + arr2[1]
index2 > sum = arr1[0] + arr2[0] + arr1[1] + arr2[1] + arr1[2] + arr2[2]
...

而不仅仅是当前指数的总和

function test() {
    for(i=0; i < numsLength; i++) {
        sum = (nums[i] + nums2[i]); 
        console.log(sum);
    };
}

答案 1 :(得分:0)

sum += (nums[i] + nums2[i]);

应该是

sum = (nums[i] + nums2[i]);
//  ^ - here

答案 2 :(得分:0)

如果我理解,你想要一个输出数组,对于每个索引,包含同一索引的输入数组值的总和,它应该如下所示:

for(i=0; i < numsLength; i++) {
    sum[i] = (nums[i] + nums2[i]);
};
console.log(sum);/*logs the whole output-array to the console*/

(注意:我还将+=替换为=:如前面的答案中所述,+=与运算符左侧变量的实际值相加 - 这会导致代码中两个输入数组的所有数组条目的累积总和。)

答案 3 :(得分:0)

真正的问题是行

  

sum + =(nums [i] + nums2 [i]);

+ =将“sum”的先前值与新值相加。

它与:

相同
  

sum = sum +(nums [i] + nums2 [i]);

var nums = [566646, 71109, 630748, 804254, 672665, 266232, 127182];
 var nums2 = [951445, 884541, 171744, 721337, 609206, 237856, 290200];
 var numsLength= nums.length;
 var i;
  var sum = 0;

function test() {
   for(i=0; i < numsLength; i++) {
    sum = (nums[i] + nums2[i]);
    console.log(sum);
   };
}


test();