返回数组中偶数之和

我正在寻找的解决方案:我的函数需要返回数组中所有偶数之和。预期的答案是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数组,并返回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),但是我知道这意味着仅在数组中的数字不是偶数时才添加。

我感觉自己是如此亲密,但却缺少一件小事。其他SO职位和MDN并没有帮助我。


九州编程
浏览 191回答 3
3回答

慕桂英3389331

和if (i % 2 === 0){&nbsp;您正在检查被迭代的索引是否为偶数。所以,你最终会相加numStr[0],numStr[2]等该指数而不是在检查值:if (numStr[i] % 2 === 0) {let numStr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];const sumEvens = (numStr) => {&nbsp; let sum = 0;&nbsp; for (let i = 0; i < numStr.length; i++) {&nbsp; &nbsp; if (numStr[i] % 2 === 0) {&nbsp; &nbsp; sum = sum + numStr[i];&nbsp; &nbsp; }&nbsp; }&nbsp; return sum;}&nbsp;console.log(sumEvens(numStr));

HUX布斯

使用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));当前代码的问题是您正在检查索引,而不是元素。

智慧大石

使用过滤器并减少。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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript