3 回答
TA贡献2036条经验 获得超8个赞
和
if (i % 2 === 0){
您正在检查被迭代的索引是否为偶数。所以,你最终会相加numStr[0],numStr[2]等该指数而不是在检查值:
if (numStr[i] % 2 === 0) {
let numStr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const sumEvens = (numStr) => {
let sum = 0;
for (let i = 0; i < numStr.length; i++) {
if (numStr[i] % 2 === 0) {
sum = sum + numStr[i];
}
}
return sum;
}
console.log(sumEvens(numStr));
TA贡献1876条经验 获得超6个赞
使用filter与reduce替代:
let numStr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const sumEvens = arr => arr.filter(e => !(e % 2)).reduce((a, b) => a + b);
console.log(sumEvens(numStr));
当前代码的问题是您正在检查索引,而不是元素。
TA贡献1946条经验 获得超3个赞
使用过滤器并减少。
let numStr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let sum = numStr.filter(i => i%2 ===0).reduce((a,v) => a += v);
console.log(sum);
添加回答
举报