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

JavaScript嵌套数组复制修改时全域变更问题求助

问题解决:嵌套数组复制子数组后修改不影响原数组

问题原因

你遇到的问题本质是JavaScript中数组属于引用类型,直接通过let newRow = x赋值时,并没有创建新的子数组,只是让newRow和x指向同一个内存地址的数组对象。所以修改newRow的元素时,原数组x的内容也会跟着变化。

解决方案

需要创建子数组的浅拷贝(因为你的子数组元素都是基本类型,浅拷贝足够),常用的实现方式有三种:

  • 扩展运算符:[...x]
  • slice()方法:x.slice()
  • Array.from()方法:Array.from(x)

修改后的代码示例

let array = [['a','e1'],['b','b1']]

let result = []

for(let x of array){
    result.push(x);
    if(x[1]==='e1'){
        // 创建子数组的浅拷贝,而非直接引用原数组
        let newRow = [...x]; 
        newRow[1] = 'e2'
        result.push(newRow);
    }
}

console.log(result); // 输出:[['a','e1'],['a','e2'],['b','b1']]

修改后,newRow是一个独立的新数组对象,修改它的元素不会影响原数组x,最终就能得到你需要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:18:19