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

JavaScript中使用forEach遍历数组为何无法修改原数组元素?

问题原因
  • 你数组里存储的是数字这类基本数据类型,forEach回调的第一个参数ele只是原数组对应位置值的拷贝,修改这个临时变量完全不会影响原数组的实际存储内容。
  • 你写的ele * 2只做了计算,没有把运算结果回写到原数组,运算完的结果直接被丢弃,自然不会产生任何效果。
实现方案

方案1:通过forEach修改原数组

如果需要直接改动原数组,可以使用forEach回调的另外两个可选参数:当前元素索引、正在遍历的原数组,通过索引直接修改原数组对应位置的值:

let array = [1, 2, 3, 4];
array.forEach((ele, index, originArr) => {
  originArr[index] = ele * 2;
});
console.log(array); // 输出 [2, 4, 6, 8]

方案2:用map生成新数组(更推荐)

如果不需要改动原数组,只是要得到处理后的新数组,更适合用map方法,符合不可变开发习惯,可读性和可维护性更好:

let array = [1, 2, 3, 4];
const doubledArray = array.map(ele => ele * 2);
console.log(array); // 原数组保持不变:[1, 2, 3, 4]
console.log(doubledArray); // 处理后的新数组:[2, 4, 6, 8]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:45:06