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

使用forEach在高阶函数中操作数组返回undefined问题排查

问题分析与修复

你的代码主要有两个关键问题,导致调用后返回undefined:

1. 函数没有返回最终结果数组

你在函数内部创建了output数组并往里面添加元素,但整个changeArray函数没有任何return语句——函数默认会返回undefined,所以调用它自然拿不到预期的数组。

2. forEach回调里的return完全无效

forEach方法不会关心回调函数的返回值,你写的return output.push(...)只是返回了push的执行结果(也就是数组的新长度),但这对forEach的执行流程没有任何影响,完全可以删掉这个多余的return。

另外,你定义了inputFunc参数但全程没用到,这个可以直接删除,或者根据后续需求补充逻辑。


修正后的代码

const array = [1, 2, 3];
function changeArray(array) {
  let output = [];
  array.forEach((ele) => {
    output.push(ele + 10); // 去掉无用的return
  });
  return output; // 关键:返回最终组装好的数组
}

console.log(changeArray(array)); // 输出 [11, 12, 13]

额外优化:用map更简洁高效

其实这种“遍历数组并返回转换后新数组”的场景,用map方法更合适——它专门用来做这类数组转换,不需要手动创建数组和调用push:

const array = [1, 2, 3];
function changeArray(array) {
  return array.map(ele => ele + 10);
}

console.log(changeArray(array)); // 输出 [11, 12, 13]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:05:16