js 数组的深度拷贝 的四种实现方法

Posted Juneling

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 ]

以上是关于js 数组的深度拷贝 的四种实现方法的主要内容,如果未能解决你的问题,请参考以下文章

记录-实现深拷贝的四种方式

js数组去重的四种方法

js数组去重的四种方法

JS 中检测数组的四种方法

JS 数组去重的四种方法

js里判断变量是数组还是对象的四种方法