数组的深拷贝和浅拷贝
时间: 2023-11-17 22:07:27 浏览: 100
数组的深拷贝与浅拷贝以及数组拷贝的几种方式比较
数组的深拷贝和浅拷贝是关于复制数组时的不同方式。
浅拷贝是指将原始数组的引用复制给新的数组,这意味着新数组和原始数组引用同一块内存地址。当修改新数组时,原始数组也会受到影响。这是因为它们共享相同的数据。在 JavaScript 中,可以使用`slice()`或`concat()`方法来实现浅拷贝。
例如:
```javascript
let originalArray = [1, 2, 3];
let shallowCopy = originalArray.slice();
shallowCopy[0] = 4;
console.log(originalArray); // [1, 2, 3]
console.log(shallowCopy); // [4, 2, 3]
```
深拷贝是指创建一个全新的数组,并将原始数组中的值复制到新数组中。这样,新数组和原始数组将互不影响,因为它们占用不同的内存空间。通常需要递归遍历原始数组的每个元素,然后将其复制到新数组中。在 JavaScript 中,可以使用`JSON.parse(JSON.stringify())`方法来实现深拷贝。
例如:
```javascript
let originalArray = [1, 2, 3];
let deepCopy = JSON.parse(JSON.stringify(originalArray));
deepCopy[0] = 4;
console.log(originalArray); // [1, 2, 3]
console.log(deepCopy); // [4, 2, 3]
```
需要注意的是,深拷贝有时可能会带来性能问题,并且无法复制函数和非原始类型的对象。
阅读全文