js使用递归编写一个可以实现对数组或对象的完全拷贝函数
时间: 2024-02-12 07:08:52 浏览: 58
js对象浅拷贝和深拷贝详解
好的,这里提供一个使用递归实现深拷贝的函数,可以对数组或对象进行完全拷贝:
```javascript
function deepClone(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
let clone = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
clone[key] = deepClone(obj[key]);
}
}
return clone;
}
```
这个函数使用递归实现了深拷贝,可以对包含数组、对象等复杂数据类型的数据进行完全拷贝。如果传入的参数是 `null` 或者不是对象或数组类型,直接返回该参数。否则,根据参数的类型创建一个新的空对象或数组,然后遍历原始对象的每个属性,使用递归调用 `deepClone()` 函数对每个属性进行拷贝,并将拷贝后的值赋给新对象或数组相应的属性。最后返回拷贝后的新对象或数组。
阅读全文