zoukankan      html  css  js  c++  java
  • 数组,对象的深拷贝 与 浅拷贝

    浅拷贝:Object.assign()
    
    let arr1 = [1,23,54]
    let arr2 = Object.assign(arr1)
    console.log(arr1 === arr2)  //result : true
    
    let obj1 = {a:1}
    let obj2 = Object.assign(obj1)
    console.log(obj1 === obj2) // result : true

    深拷贝 JSON.parse( JSON.stringify( ) )

    let arr1 = [1,54,62,7]
    let arr2 = JSON.parse(JSON.stringify(arr1))
    console.log(arr1 === arr2 ) //result :false
    
    let obj1 = {a:1}
    let obj2 = JSON.parse(JSON.stringify(obj1))
    console.log(obj1 === obj2) // result : false

    深拷贝 扩展运算符 (...)

    在使用扩展运算符 来进行深拷贝,需要注意的是  扩展运算符 只深拷贝 一维数组 和 对象  (意思就是里面不能套其他的数组或对象)

    let arr1 = [1,53,58,4]
    let arr2 = [...arr1]
    console.log(arr1 === arr2) // result : false
    
    let obj1 = {a:1,b:2}
    let obj2 = {...obj1}
    console.log(obj1 === obj2) //result : false

    下面 举例 不可深拷贝 的情况

    let arr1 = [1,53,5,[2,3]]
    let arr2 = [...arr1]
    console.log(arr1 === arr2) //result : false
    
    //但是这里 有一个情况存在
    console.log(arr1[3] === arr2[3]) // result : true
  • 相关阅读:
    [NOIp2016] 天天爱跑步
    状压DP小拼盘
    DP × KMP
    KMP算法 详解+模板
    [NOI2014] 起床困难综合症
    [洛谷P3391] 文艺平衡树 (Splay模板)
    START
    【C】单链表的实现
    【数据结构】动态顺序表
    C语言实现扫雷程序
  • 原文地址:https://www.cnblogs.com/TreeCTJ/p/11684415.html
Copyright © 2011-2022 走看看