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 @   芳香四溢713051  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2023-03-11 js 分钟 转 小时
2021-03-11 jQuery 同一属性名获取多个属性值
2021-03-11 js 点击锚点滑动定位
点击右上角即可分享
微信分享提示