繁体   English   中英

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

[英]Would someone mind helping me understand why my function isn't producing correct results?

我想在 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();

如果你想打印每个数组索引的总和,你不需要累积为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);
    };
}

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

应该

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

如果按照我的理解,您想要一个输出数组,其中包含每个索引的相同索引的输入数组值的总和,它应该如下所示:

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

(注:我也换成了+=通过= :如在前述的答案所解释的, +=与可变的对操作者的左侧的实际值总和-这导致两者的所有阵列条目的累积总和代码中的输入数组。)

真正的问题是线路

总和 += (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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM