• 深拷贝(递归)


    使用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
     
  • 相关阅读:
    glob
    【转载】分词小结
    【pandas】基本处理
    【pandas】函数映射:map() /apply() /applymap()
    C# 获取计算机信息
    oracle 关键字
    oracle 触发器
    C# DataTable分页处理
    C#常用控件介绍
    C# 关键字【转】
  • 原文地址:https://www.cnblogs.com/chiangyibo/p/8279941.html
Copyright © 2020-2023  润新知