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

    1、基本数据类型的拷贝就是值得拷贝

    2、引用数据类型的拷贝分为浅拷贝跟深拷贝

    浅拷贝:目标对象跟源对象共用一个实体,只是变量名不同

    深拷贝:目标对象跟源对象都是独立的个体

    3、浅拷贝的方法:Object.assign()

    4、深拷贝的方法:

      4-1:将对象转换成字符串(JSON.stringfy)->再将字符串转换成对象(JSON.parse)

        注意:无法拷贝原始对象的函数,因为函数无法转换成字符串

      4-2:递归循环

    function deepCopy(origin,target){
      var target = null;
      if(typeof origin === 'object' && origin !== null){
        target = origin instanceof Array ? [] : {}
        for(var key in origin){
          target[key] = deepCopy(origin[key],target[key]);
        }
      }else{
        target = origin;
      }
      return target
    }
    
    //例子
    var obj = {
      "request_id": "9cf24cde471257bdff47-0000", 
      "code": 0, 
      "data": [
          {
              "id": "1", 
              "parent_id": "0", 
              "name": "佛山分公司", 
              "children": [
                  {
                      "id": "2", 
                      "parent_id": "1", 
                      "name": "总经办", 
                      "children": [ ]
                  }, 
                  {
                      "id": "5", 
                      "parent_id": "1", 
                      "name": "综合管理部", 
                      "children": [
                          {
                              "id": "8", 
                              "parent_id": "5", 
                              "name": "行政部", 
                              "children": [ ]
                          }, 
                          {
                              "id": "9", 
                              "parent_id": "5", 
                              "name": "人事部", 
                              "children": [ ]
                          }
                      ]
                  }
              ]
          }
      ], 
    }
    var target = null;
    target = deepCopy(obj,target)
    console.log('111',target);
    

      

  • 相关阅读:
    修改Windows上MySQL的数据文件路径
    【转】Analysis Services 2005中数据完整性处理
    设置Bitvise Ssh Client 为Windows服务
    Finalize/Dispose资源清理模式
    ACM HDU BFS 题目
    BFS专题之hdu1242 rescue
    bfs专题之HUD 1429 胜利大逃亡(续)
    ACM HDU 1010 Tempter of the Bone
    流水线作业调度问题
    系统原型
  • 原文地址:https://www.cnblogs.com/ilovexiaoming/p/14830038.html
Copyright © 2011-2022 走看看