用js实现数组对象函数的深拷贝
时间: 2024-04-10 18:28:16 浏览: 70
你可以使用递归来实现数组和对象的深拷贝。下面是一个使用 JavaScript 实现的示例代码:
```javascript
function deepCopy(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
let copy;
if (Array.isArray(obj)) {
copy = [];
for (let i = 0; i < obj.length; i++) {
copy[i] = deepCopy(obj[i]);
}
} else {
copy = {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
}
return copy;
}
```
你可以通过调用 `deepCopy` 函数来深拷贝一个数组或对象。该函数会递归地复制所有嵌套的数组和对象,并返回一个新的拷贝。
这是一个示例用法:
```javascript
const originalArray = [{name: 'Alice'}, {name: 'Bob'}, {name: 'Charlie'}];
const copiedArray = deepCopy(originalArray);
copiedArray[0].name = 'Dave';
console.log(originalArray[0].name); // 输出 "Alice"
console.log(copiedArray[0].name); // 输出 "Dave"
```
在上面的示例中,我们首先使用 `deepCopy` 函数创建了 `originalArray` 的深拷贝 `copiedArray`。然后,我们修改了 `copiedArray` 中的第一个对象的 `name` 属性。最后,我们分别输出了 `originalArray[0].name` 和 `copiedArray[0].name` 的值,可以看到它们已经不相同了。这证明了深拷贝的成功实现。
阅读全文