作用
1.深度克隆函数 deepClone 可以帮助解决对象或数组的深度克隆问题。在 JavaScript 中,对象和数组是引用类型,直接赋值或浅拷贝只会复制引用而不是值,这可能导致对原始对象或数组的改变会影响到拷贝后的对象或数组,而深度克隆则可以创建一个完全独立的副本。
2.通过递归处理对象或数组中的每一个属性或元素,深度克隆函数能够确保所有嵌套的对象或数组也被完全复制,而不是简单的复制引用。
3.使用深度克隆函数可以避免在操作复杂数据结构时出现意外的数据共享或不一致的问题,保证数据的独立性和准确性。
因此,对于需要对包含嵌套结构的对象或数组进行克隆操作,或者需要创建完全独立的副本以防止数据共享引起的问题时,使用深度克隆函数是一个有效的解决方案。它可以确保复制后的对象或数组与原始数据完全独立,不会相互影响。
let arr = [
{name:"张三",id:1,ziarr:[{name:"张三2",id:3,ziarr:null}]},
{name:"张1",id:2,ziarr:[name:"dd",id:5]}]
/**
* 深度克隆对象或数组
* @param {Object|Array} obj 要克隆的对象或数组
* @returns {Object|Array} 克隆后的对象或数组
*/
function deepClone(obj) {
if (obj === null || typeof obj !== 'object') {
return obj; // 基本类型直接返回
}
if (Array.isArray(obj)) {
return obj.map(item => deepClone(item)); // 处理数组
}
const newObj = {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = deepClone(obj[key]); // 递归处理对象属性
}
}
return newObj;
}
//使用
let result = deepClone(arr);
console.log("新数组",result);