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

为什么.reduce()方法累加器对象中的数组调用.push()不生效?

问题原因

Array.reduce()的回调函数要求每轮执行结束后必须返回累加器对象,供下一轮迭代使用。你提供的代码中没有在回调内返回acc,导致第一轮迭代结束后累加器变为undefined,后续迭代访问undefined.even/undefined.odd会直接抛出异常,push操作自然无法生效。

修复方案

只需要在回调函数末尾添加返回累加器的逻辑即可:

let a = [];
for (let i = 0; i <= 20; i++) {
  a.push(i);
}

let {
  even,
  odd
} = a.reduce((acc, val) => {
  val % 2 === 0 ? acc.even.push(val) : acc.odd.push(val);
  return acc; // 新增返回累加器的逻辑
}, {
  even: [],
  odd: []
});

内容的提问来源于stack exchange,提问作者PAPPI-HS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:48:02