有人可以向我解释我在这里做错了什么吗... 这段代码来自雄辩的javascript,效果很好
function sum(array) {
let total = 0;
for (let value of array) {
total += value;
}
return total;
}
这是我为练习编写的内容,但返回NaN。
function sum(numArray) {
let add = 0;
for (let a = 0; a <= numArray.length; a++) {
let addIndex = numArray[a];
add += addIndex;
}
return add;
}
答案 0 :(得分:4)
您的for
循环不在数组索引中。您必须使用:
a < numArray.length
代替:
a <= numArray.length
答案 1 :(得分:0)
您只需将undefined
添加到add
,因为您将索引计数设置为long。
for (let a = 0; a <= numArray.length; a++) {
// ^ wrong, takes last index + 1
function sum(numArray) {
let add = 0;
for (let a = 0; a < numArray.length; a++) {
let Addindex = numArray[a];
add += Addindex;
}
return add;
}
console.log(sum([1, 2, 3, 4]));
答案 2 :(得分:0)
问题是由于a <= numArray.length
造成的。将其更改为a < numArray.length
。由于数组从0索引开始,因此未定义第6个元素或第5个索引的元素a [5]的情况。因此它将添加一个具有先前添加的数字的undefined
,因此它将是NaN
function sum(numArray) {
let add = 0;
for (let a = 0; a < numArray.length; a++) {
let Addindex = numArray[a];
add += Addindex;
}
return add;
}
console.log(sum([1, 2, 3, 4, 5]))
答案 3 :(得分:0)
您收到越界错误。在您的for
循环中,您可以将其更改为:
for (let a = 0; a < numArray.length; a++) {
OR
for (let a = 0; a <= numArray.length - 1; a++) {
后者也可以,但是很难阅读。
答案 4 :(得分:0)
您还可以编写一个具有两个参数的函数,一个数组和一个将数组值相加的回调函数,如
function forEach(array, arrayAdder){
for (var i = 0; i < array.length; i ++)
arrayAdder(array[i]) ;
}
我们现在可以像这样初始化数组和总和
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], sum = 0;
之后,我们将其传递给这样的函数
forEach(array, function(number){
sum += number ;
});
然后打印答案
console.log(sum);