js 实现深拷贝/深复制

//深拷贝
const deepClone = (obj) => {
    var target = {};
    for (var key in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, key)) {
            if (typeof obj[key] === 'object') {
                target[key] = deepClone(obj[key]);
            } else {
                target[key] = obj[key];
            }
        }
    }
    return target;
}
var originalArray = [
    {        
    "MaterialCode": "",        
    "MaterialName": "物料Yy7O",        
    "MaterialSpec": "物料Yy7O",    
  },    
  {        
    "MaterialCode": "",        
    "MaterialName": "物料KjTn",        
    "MaterialSpec": "物料KjTn",    
  }
];
var copyArr = deepClone(originalArray );
copyArr[0].MaterialName = '张三' //改变新数组的数据
copyArr[0].MaterialSpec = '张三', //改变新数组的数据
console.log("原数组",originalArray)
console.log("新数组",copyArr )
该数组包含了原数组中每个元素的引用。如果数组中的元素是基本类型(如数字、字符串、布尔值),那么引用意味着复制这些值。但是,如果数组中的元素是对象(包括数组、函数等),那么引用意味着复制的是对象的内存地址,而不是对象本身。
深拷贝意味着不仅要复制数组本身,还要复制数组中的每个对象,以及这些对象中包含的任何嵌套对象。

 

posted @ 2024-03-11 09:05  芳香四溢713051  阅读(17)  评论(0编辑  收藏  举报