var ary1=[1,2,3,4,5];

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;
}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐