首页 > 其他分享 >js 实现深拷贝/深复制

js 实现深拷贝/深复制

时间:2024-03-11 09:25:38浏览次数:18  
标签:obj 数组 copyArr js 复制 key var 拷贝 target

//深拷贝
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 )
该数组包含了原数组中每个元素的引用。如果数组中的元素是基本类型(如数字、字符串、布尔值),那么引用意味着复制这些值。但是,如果数组中的元素是对象(包括数组、函数等),那么引用意味着复制的是对象的内存地址,而不是对象本身。
深拷贝意味着不仅要复制数组本身,还要复制数组中的每个对象,以及这些对象中包含的任何嵌套对象。

 

标签:obj,数组,copyArr,js,复制,key,var,拷贝,target
From: https://www.cnblogs.com/wengg/p/18065303

相关文章

  • Nestjs系列 Nestjs基础(四)
    Nest中的middlewaremiddware基础用法已经在Nest的AOP架构章节中存在。此次记录middleware的更详细用法新建项目,然后创建一个middleware模板nestgmiddlewaretest--no-spec--flat可以看到此时的req和res都是any,可以对其进行明确的类型标注,express就从......
  • Java登陆第三十四天——Node.js安装、npm配置、npm命令
    Nodejs是JS的运行环境,使JS可以运行在服务端,可以夸平台,可以运行在浏览器之外,成为一款全栈编程语言。Node.js安装Nodejs官网,进入......
  • comfy UI 的workflow对应的json文件
    {"3":{"inputs":{"seed":404663911490888,"steps":30,"cfg":7,"sampler_name":"dpmpp_2m","scheduler":"karras","denoi......
  • 郑莉cpp例6-22 浅层复制与深层复制
    浅层复制与深层复制浅层复制并没有形成真正的副本,存在两个对象共用同一块内存空间而导致执行析构函数时,该空间被两次释放,导致运行错误。深层复制则实现,复制之后,两个对象不互相影响。#include<iostream>usingnamespacestd;#include<cassert>classPoint{public:P......
  • 在VueJS中使用 froala 富文本编辑器
    安装包npminstallvue-froala-wysiwyg--save集成组件import'./assets/main.css'//ImportFroalaEditorimport'froala-editor/js/plugins.pkgd.min.js';//Importthirdpartypluginsimport'froala-editor/js/third_party/embedly.min';......
  • fastjson-RCE
    fastjson是一个有阿里开发的一个开源Java类库,可以将Java对象转换为JSON格式(序列化),当然它也可以将JSON字符串转换为Java对象(反序列化)。Fastjson可以操作任何Java对象,即使是一些预先存在的没有源码的对象(这就是漏洞来源,下文会解释)。使用比较广泛。 fastjson序列......
  • Redis 架构深入:主从复制、哨兵到集群
    大家好,我是小康,今天我们来聊下Redis的几种架构模式,包括主从复制、哨兵和集群模式。前言:设想一下,你的咖啡馆在城市中太受欢迎,导致每天都人满为患。为了缓解这种压力,你决定在其他地方开设分店,这样顾客就可以在附近的分店享受咖啡,而不必涌向一个地方,这就好比Redis的主从复制,让......
  • FastJson使用和案例
    FastJson使用和案例导入依赖<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.73</version></dependency>使用案例1.新建Perosn类,......
  • Java登陆第三十三天——ES6(二)浅拷贝、深拷贝;
    对象的拷贝,就是复制一个已有对象的方式。JS中对象的拷贝<script>console.log("1.浅拷贝,对象仅拷贝引用地址,基本类型拷贝的是值");letdoor1=["木门"];letdoor2=door1;//浅拷贝仅仅是拷贝引用地址door2[0]="铁门";console.log(door1);//['铁门']......
  • js 解释数据结构
    一、 JSON.parse 妙用用如下语句打印:console.info(result);   console.info(result.data);   console.info(JSON.parse(result.data));   console.info(JSON.parse(result.data).data.PriceSheetId);   console.info(result.data.Data);打印......