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 ]

  • 相关阅读:
    shmget() 建立共享内存
    [转]SQL2005 连接问题处理
    [转]工作以后十不要,自勉
    C#学习笔记
    一位软件工程师6年总结(转)
    时间相关处理
    Litter Tips
    [转] VS打开解决方案时报错的处理方法
    面向对象—设计模式
    SQL Server 2000中的错误
  • 原文地址:https://www.cnblogs.com/juneling/p/9149969.html
Copyright © 2011-2022 走看看