js如何深度copy两个数组
时间: 2024-09-15 10:12:33 浏览: 39
在JavaScript中,深度复制数组通常涉及到对嵌套数据结构的处理。有几种常见的方法可以实现深度复制:
1. **使用JSON.parse()和JSON.stringify()**: 这种方法适用于简单数组和非函数、日期等复杂类型的值。首先将数组转换成JSON字符串,然后再解析回来。
```javascript
function deepCopyArray(arr) {
return JSON.parse(JSON.stringify(arr));
}
```
**注意**:这种方法不能复制函数、RegExp对象或undefined。
2. **递归遍历数组**: 使用`for...of`循环,并为每个元素创建一个新的副本,如果是对象,则继续递归。
```javascript
function deepCopyArray(arr) {
let result = [];
for (let item of arr) {
if (Array.isArray(item)) {
result.push(deepCopyArray(item)); // 对于数组也做深拷贝
} else if (typeof item === 'object') {
result.push(Object.assign({}, item)); // 对象浅拷贝,需进一步递归检查属性
} else {
result.push(item);
}
}
return result;
}
```
3. **利用lodash库**: 如果项目依赖了lodash库,它提供了一个便捷的深拷贝方法`_.cloneDeep()`。
```javascript
const _ = require('lodash');
function deepCopyArray(arr) {
return _.cloneDeep(arr);
}
```
阅读全文