• 深拷贝(递归)


    使用jQuery的$.extend

    var arr = [['a','b'],0,1,2,{name:'old'}];
     
    var newArr = $.extend(true, [], arr);
     
     

    没有Function的对象中可以使用

    var newObject = JSON.parse (JSON.stringify (oldObject));

    ES6扩展运算符实现数组的深拷贝

    var arr1=[1,2,3];
    var arr2=[...arr1];

    ===================

    var arr1=[1,2,3];
    var arr2=Array.from(arr1);

    对象的深拷贝(通用)

    var json1={"name":"鹏哥","age":18,"arr1":[1,2,3,4,5],"string":'afasfsafa',"arr2":[1,2,3,4,5],"arr3":[{"name1":"李鹏"},{"job":"前端开发"}]};
    var json2={};
    function copy(obj1,obj2){
      var obj2=obj2||{};                                           //最初的时候给它一个初始值=它自己或者是一个json
      for(var name in obj1){
        if(typeof obj1[name] === "object"){                        //先判断一下obj[name]是不是一个对象
          obj2[name]= (obj1[name].constructor===Array)?[]:{};      //我们让要复制的对象的name项=数组或者是json
          copy(obj1[name],obj2[name]);                             //然后来无限调用函数自己 递归思想
        }else{
          obj2[name]=obj1[name];                                   //如果不是对象,直接等于即可,不会发生引用。
        }
      }
      return obj2;                                                 //然后在把复制好的对象给return出去
    }
    json2=copy(json1,json2)
    json1.arr1.push(6);
    alert(json1.arr1);  //123456
    alert(json2.arr1);  //12345
     
  • 相关阅读:
    python学习第三课
    Linux基本操作知识一
    Linux是什么
    Django 多对多 关系
    Django 解决跨域
    支付宝支付
    django中间件
    DRF一对多序列化和反序列化
    python代码实现购物车(django的redis与vue)
    Spring 依赖注入两种方式
  • 原文地址:https://www.cnblogs.com/chiangyibo/p/8279941.html
Copyright © 2020-2023  润新知