zoukankan      html  css  js  c++  java
  • 深拷贝

    1.递归

    var data = [1, 2, 3]
    var data2={"x":11,"y":22}

    var deepcopy = function(obj) {
    const t = typeof obj
    let o = Array.isArray(obj) ? [] : {}
    if(t === "object") {
    for(let i in obj) {
    o[i] = deepcopy(obj[i])
    }
    }else{
    return obj
    }
    return o;
    }

    var copyData = deepcopy(data)
    copyData[0] = 4
    var copyData2 = deepcopy(data2)
    copyData2.x = 4
    console.log(data)              //[1,2,3]
    console.log(copyData)      //[4,2,3]
    console.log(data2)            //{"x":11,"y":22}
    console.log(copyData2)    //{"x":4,"y":22}

    2.JSON对象的stringify和parse

    var deepcopy2 =function(obj){
    var str,reObj = Array.isArray(obj)?[]:{}
    if(window.JSON){
    str = JSON.stringify(obj);
    reObj =JSON.parse(str);
    }
    return reObj
    }

    var copyData = deepcopy2(data)
    copyData[0] = 4
    var copyData2 = deepcopy2(data2)
    copyData2.x = 4
    console.log(data)              //[1,2,3]
    console.log(copyData)      //[4,2,3]
    console.log(data2)            //{"x":11,"y":22}
    console.log(copyData2)    //{"x":4,"y":22}

  • 相关阅读:
    Java 基础
    Mybatis
    Gateway
    Debug
    Nacos
    Debug
    Debug
    echars 折线图之一条线显示不同颜色,及拐点显示不同颜色
    捌月份生活随笔
    MyMatrix2022 64位版本下载 64bits Edition
  • 原文地址:https://www.cnblogs.com/youngMe/p/11097040.html
Copyright © 2011-2022 走看看