如何使用Array.reduce方法分别计算数组奇偶数总和?返回undefined如何解决
问题排查与修复
根因分析
reduce回调要求每次遍历都返回累加器acc,你现有写法里的三目运算直接返回了acc.even + cuu或者acc.odd + cuu的单个数值,第一次遍历结束后acc就从初始的{even:0, odd:0}对象变成了数字类型,后续遍历再读取acc.even、acc.odd自然得到undefined,最终解构出来的两个变量都是undefined。- 代码末尾
console.log(getOddEvenSum(nums)缺少右闭合括号),会触发语法报错。
修复后的可运行代码
const nums = [1,2,3,4,5,6,7,8,9] function getOddEvenSum(numbers){ const {even, odd} = numbers.reduce((acc, cur) => { cur % 2 === 0 ? acc.even += cur : acc.odd += cur return acc // 每次都返回完整的累加对象 }, {even: 0, odd: 0}) return {even, odd} } console.log(getOddEvenSum(nums))
运行输出:
{ even: 20, odd: 25 }
内容的提问来源于stack exchange,提问作者sunilsalat
相关产品推荐
相关产品推荐

