如何在JavaScript中创建数组的副本,而不是引用?
大家好!我是JavaScript新手,遇到了一个无法解决的问题。当我尝试复制数组时,对新数组的修改会影响原数组。例如:
```javascript
let original = [1, 2, 3];
let copy = original;
copy.push(4);
console.log(original); // [1, 2, 3, 4] — 我不希望original被改变!
```
我明白`copy = original`创建的不是副本,而是对同一数组的引用。但如何让`copy`完全独立呢?我试过`copy = original.slice()`,这对简单数字有效。但当我有嵌套数组或对象时,修改仍然会影响原数组:
```javascript
let nested = [[1, 2], [3, 4]];
let copyNested = nested.slice();
copyNested[0].push(5);
console.log(nested[0]); // [1, 2, 5] — 又改变了!
```
问题出在哪里?如何制作“深拷贝”,使得对副本的任何修改都不会影响原数组?最好针对不同情况给出示例:简单数组、对象数组等。