问题描述
我只是不明白 i 如何不保存数字本身。我知道通常在某事之后的括号指的是索引。我在这里很困惑。
function sumArray(numArr){
let total = 0;
for (let i = 0; i < numArr.length; i++){
total += numArr[i];
}
return total;
}
解决方法
请检查以下行。
function sumArray(numArr){
let sum = 0;
for(let v of numArr) {
sum += v;
}
return sum;
}
console.log(sumArray([1,3,4]));
我只是不明白 i 如何不保存数字本身。一世 知道通常在某事之后的括号指的是索引。我是 弄糊涂了。
这是因为您使用的是 for
语句,而在 for
语句中,i
是一个计数器变量,并且始终具有索引而不是该索引处的数组值。如果您需要 i
中的值,请使用 forEach
如下或使用 docs
for..in
(other answer)
function sumArray(numArr){
let total = 0;
numArr.forEach (i=>{total += i});
return total;
}
console.log(sumArray([1,2,3]));
总结数组的最佳工具是reduce。如果您的最终结果将是单个值,则 Reduce 是最好的工具,它可以是数组、对象,甚至是单个总和值(如本例中)。
无需关心存储总和的索引和变量(reduce在内部做)
function sumArray(numArr) {
return numArr.reduce((acc,curr) => acc + curr,0);
}
console.log( sumArray([1,4,5,6,7]) );
如果你只是想添加,那么你可以改用这个。
function sumArray(numArr) {
let total = numArr.reduce((x,y) => x + y)
console.log(total)
}
sumArray([1,6])
这是最简单的求和方法。基本上 reduce()
减少了传递给单个值的任何数组。它将从左到右为每个元素执行一个函数。至少这是我所知道的。如果此解决方案是您的答案,请在左侧打勾。