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 ]

posted @ 2018-06-07 12:14  Juine  阅读(19083)  评论(1编辑  收藏  举报