zoukankan      html  css  js  c++  java
  • js数组深度拷贝 的四种实现方法

    首先声明本人资质尚浅,本文只用于个人总结。如有错误,欢迎指正、共同提高。

    -----------------------------------------------------------------------------------

     
    var ary1=[1,2];
     
    es5:
    方法一:适用 单层 数组嵌套的深拷贝
    var ary2 = ary1.concat();
     
    方法二:适用 多层 数组嵌套的深拷贝
    var ary2 = JSON.parse(JSON.stringify(ary1));
      //此方法适用于Oject的深度拷贝,因为Array属于Oject类型,所以也适用于此处;
      //需要注意的是:作为Oject的深度拷贝时,要复制的function会直接消失,所以这个方法只能用在单纯只有数据的对象。
     
     
    es6:
    // 方法三:适用 单层 数组嵌套的深拷贝
    var ary2 = [...ary1];
     
    // 方法四:适用 单层 数组嵌套的深拷贝
    var [...ary2] = ary1;
     
    //方法五:通过递归实现 多层 的深拷贝
     function deepCopy(source){
            if (typeof source != "object") {
               return source;
            }
            if (source == null) {
                return source;
            }
            var newObj = source.constructor === Array ? [] : {};  //开辟一块新的内存空间
            for (var i in source) {
                 newObj[i] = deepCopy(source[i]);
            }
            return newObj;
    }
    

      

     
     
     

    如有错误,欢迎评论指正、共同提高。[握手]    

    欢迎转载,转载请注明:转载自[ http://www.cnblogs.com/juneling ]

  • 相关阅读:
    sort排序
    js数组
    json数据格式 与 for in
    js 定时器
    鼠标滚轮事件
    cookie
    POJ 2387 Til the Cows Come Home
    POJ 1459 Power Network
    HDU 5389 Zero Escape
    HDU 5387 Clock
  • 原文地址:https://www.cnblogs.com/juneling/p/9149969.html
Copyright © 2011-2022 走看看