这段代码有什么问题?
function range(start, end){
var arrayRange = [];
for(i= start; i<=end; i++){
arrayRange.push(i)
}
return(arrayRange);
}
var r = range(1,10);
console.log(r);
function sumRange(sumArray){
var total = 0;
for(var i=0; i <= sumArray.length; i++){
total = total + sumArray[i];
}
return total;
}
var s=sumRange(r);
console.log(s);
这是在控制台中显示的内容。
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
NaN
我正在尝试 Eloquent Javascript 的练习来理解回调函数。我的目标是生产这个
console.log(sum(range(1,10)));
// 55
最佳答案
问题是 i <= sumArray.length
,数组索引从 0 到 length -1
所以循环条件应该是 i < sumArray.length
在您的情况下,循环的最后一次迭代将是 total + undefined
它将返回 NaN
function sumRange(sumArray) {
var total = 0;
for (var i = 0; i < sumArray.length; i++) {
total = total + sumArray[i];
}
return total;
}
你可以使用 Array.reduce() 像
function sumRange(sumArray) {
return sumArray.reduce(function (sum, val) {
return sum + val;
}, 0);
}
关于javascript - 数组中数字范围的总和(回调函数),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30749228/