如何将在JavaScript中保存为数组的数字与while循环相加
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将在JavaScript中保存为数组的数字与while循环相加相关的知识,希望对你有一定的参考价值。
哪里出错了?我想对数组中的每个数字求和。警报说NaN
。
var numbers = [10, 42, 5, 87, 61, 34, 99];
var i = 0;
var e = 0;
while(i <= numbers.length) {
e = e + numbers[i];
i++;
}
alert(e);
问题在于数组长度您正在检查,因为数组索引从0开始。这样做时:
i <= numbers.length
您正在检查[0:10,1:42,2:5,3:87,4:61,5:34,6:99,7:???]因为数字长度是7.要解决它只需:
i < numbers.length
您不检查数组中的现有数字。
以下是我们在学校的想法:
//main code//
var numbers = [10, 42, 5, 87, 61, 34, 99];
var result = sumIntArray(numbers);
//end of main code//
function sumIntArray(array){
var result = 0;
for (var i = 0; i < array.length; i++) {
if (array[i].isInteger()) {
result += array[i];
} else {
if (i === 0) {
alert("1st object in array is not number, will skip...");
}
else if (i === 1) {
alert("2nd object in array is not number, will skip...");
}
else if (i === 2){
alert("3rd object in array is not number, will skip...");
}
else {
alert((i+1).toString() + "th object in array is not number, will skip...");
}
}
}
return result;
}
for循环添加了这个i ++你在while循环中创建并使代码更清晰。 无需在主代码中声明我:)
- 始终使函数简化主代码。
- 即使有人想打破逻辑,也要制造永远不会出错的功能。
虽然不要让学校打破你的创造力,但你的代码很棒! :)
这条线是原因:
while(i <= numbers.length) {
数组是0索引,所以你可以从索引0(包括)到numbers.length
(不包括)。您将超出该限制,导致您访问未在给定索引处定义的元素。你必须这样做:
while(i < numbers.length) {
或者使用ES2015语法,您可以这样做。
let numbers = [10, 42, 5, 87, 61, 34, 99];
let sum = numbers.reduce((a,b) => a + b);
你可以读懂Array.prototype.reduce(accumulator, element, callback, startingValue)
here。
您的情况有误,只需使用<而不是<=
while(i < numbers.length)
有几种方法可以改善这一点。首先,你想改变你的条件i < numbers.length
,而不是i <= numbers.length
。正如你所写,最后一个数字永远不会被计算在内。
你可以改进的另一种方法是使用+=
表示法 - 当你可以写e = e + numbers[i]
时,没有必要写e += numbers[i]
。
你可以从数组的末尾用qazxsw poi和qazxsw poi条件下的真实性检查。
在里面只需添加项目。
post increment
以上是关于如何将在JavaScript中保存为数组的数字与while循环相加的主要内容,如果未能解决你的问题,请参考以下文章
如果在 JavaScript w/HTML 中选择了某个国家/地区,如何要求邮政编码为数字