![](/img/trans.png)
[英]Please can someone help me to understand why the image isn't showing on the screen?
[英]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.