js深拷贝 数组对象
时间: 2023-10-11 09:05:05 浏览: 97
你可以使用以下方法来进行 JavaScript 中的深拷贝数组和对象:
1. 使用 JSON.parse 和 JSON.stringify:这是一种简单的方法,它将对象转换为字符串,然后再将字符串解析为新的对象。这种方法适用于没有函数和循环引用的简单对象和数组。
```
let originalArray = [1, 2, 3];
let clonedArray = JSON.parse(JSON.stringify(originalArray));
```
```
let originalObject = { name: 'John', age: 30 };
let clonedObject = JSON.parse(JSON.stringify(originalObject));
```
2. 使用递归函数:这是一种更通用的深拷贝方法,可以处理任意复杂度的对象和循环引用情况。
```
function deepClone(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
let clone = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
clone[key] = deepClone(obj[key]);
}
}
return clone;
}
let originalArray = [1, 2, { foo: 'bar' }];
let clonedArray = deepClone(originalArray);
let originalObject = { name: 'John', age: 30, hobbies: ['reading', 'painting'] };
let clonedObject = deepClone(originalObject);
```
请注意,如果对象中包含函数、正则表达式、日期等特殊类型的值,这些值在深拷贝过程中可能会丢失或转换为其他类型。
阅读全文