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

JavaScript自定义forEach执行后目标数组未更新的问题咨询

问题解决:自定义forEach无法更新原数组

问题原因

你的自定义forEach函数没有对原数组执行修改操作:

  • 调用callback(array[i])时,只是计算出元素的平方值,但没有将结果赋值回原数组的对应位置。由于数字是基本类型,传递给回调的是值的副本,修改副本不会影响原数组的元素。
  • 函数内部的newArray变量完全未被使用,也未与原数组建立关联,因此原数组始终保持初始值。

修正方案

修改forEach函数,在遍历过程中将回调处理后的结果赋值回原数组的对应索引位置,直接更新原数组:

// 平方函数保持不变
const square = a => a * a;

// 修正后的自定义forEach
function forEach(array, callback) {
    for (let i = 0; i < array.length; i++) {
        // 将回调结果赋值回原数组,实现更新
        array[i] = callback(array[i]);
    }
}

var myarray = [10,20];
forEach(myarray, square);
console.log(myarray); // 输出 [100, 400]

补充说明

原生JavaScript的forEach方法默认也不会修改原数组,若用原生方法实现同样效果,需在回调里主动修改原数组元素:

myarray.forEach((item, index) => {
    myarray[index] = square(item);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:20:32