You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:18:05