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

使用JavaScript的reduce方法将数组奇数乘2报undefined错误如何解决

问题排查

  • 错误1:reduce的回调函数没有返回累计器acc
    reduce的工作逻辑是每次迭代拿到上一次返回的累计值作为本次的acc参数,你的回调全程没有return语句,第一次迭代结束后acc就会变成undefined,后续操作直接报错。
  • 错误2:操作对象错误,你把元素push到了原数组arr而不是累计器acc里
    你初始传入的空数组是给acc的初始值,所有新元素都应该往acc里添加,操作原数组不仅达不到生成新数组的效果,还会意外修改原数组的内容。

修正后的代码

const multiplyOddByTwo = (arr) => {
  return arr.reduce((acc, curr) => {
    if (curr % 2 === 0) {
      acc.push(curr);
    } else {
      acc.push(curr * 2)
    }
    // 每次迭代必须返回累计器给下一轮迭代使用
    return acc
  }, [])
}

console.log(multiplyOddByTwo([1, 2, 3])); // 输出结果:[2, 2, 6]

内容的提问来源于stack exchange,提问作者user14674901

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 11:24:10