如何让JavaScript函数返回数组中能被3整除的数字之和?
修复JavaScript函数,实现所有能被3整除数字的求和
嘿,我来帮你搞定这个问题!你的当前函数有两个核心问题:一是找到第一个能被3整除的数就立刻return了,导致后续符合条件的数根本没被处理;二是完全没有设置累加变量来存储总和。咱们来一步步把它改对:
方法一:修正for循环版本
先初始化一个总和变量,遍历数组时把符合条件的数累加进去,最后再返回总和:
function sumNumbersBy3(...numberArray) { let sum = 0; // 初始化累加和为0 for(let i = 0; i < numberArray.length; i++) { if (numberArray[i] % 3 === 0) { sum += numberArray[i]; // 把能被3整除的数加到总和里 } } return sum; // 循环完成后返回最终总和 } console.log("sumNumbersBy3", sumNumbersBy3(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) === 18); // 现在会输出true啦
方法二:用数组reduce方法更简洁
如果你想让代码更简洁,可以用JavaScript数组的reduce方法,它专门用来处理累加这类场景:
function sumNumbersBy3(...numberArray) { return numberArray.reduce((total, currentNum) => { // 判断当前数是否能被3整除,是就加到total里,否则保持total不变 return currentNum % 3 === 0 ? total + currentNum : total; }, 0); // 0是累加的初始值 }
这样不管用哪种方法,函数都能正确计算所有能被3整除的数字之和啦。
内容的提问来源于stack exchange,提问作者sakmario
相关产品推荐
相关产品推荐

