javascript - javascript - 在数组中,返回偶数的总和

我正在寻找的解决方案: 函数需要返回数组中所有偶数的总和,预期的答案是30.

我的问题是: 它返回的答案是25.


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 (i % 2 === 0){ 


 sum = sum + numStr[i];


 }


 }


 return sum;


}



console.log(sumEvens(numStr));

我改变了函数,并返回sum数组,以找到返回25的原因,因为它是奇数数组。


let numStr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];



const sumEvens = (numStr) => {


 let sum = [ ];


 for (let i = 0; i < numStr.length; i++) {


 if (i % 2 === 0){ 


 sum.push(numStr[i]);


 }


 }


 return sum;


}



console.log(sumEvens(numStr));

我能够获得正确输出30的唯一方法是制作我的if语句if (i % 2 !== 0) ,但是,我知道,这意味着只有在数组中的数字不均匀时才添加。

我觉得自己是如此接近答案,但是,却错过了一件小事。

时间:


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));

filterreduce一起使用:


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));

当前代码的问题是你正在检查索引,而不是元素。

使用过滤器并减少。


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);

你可以使用JavaScript reduce


let numStr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];



function getSum(total, num) {


 return total + (num%2===0?num:0);


}


var my_sum = numStr.reduce(getSum, 0);



console.log(my_sum)
...