首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[转cnblogs]js数组深度拷贝 的四种实现方法

[转cnblogs]js数组深度拷贝 的四种实现方法

作者头像
周星星9527
发布2021-08-13 15:08:15
5600
发布2021-08-13 15:08:15
举报

首先声明本人资质尚浅,本文只用于个人总结。如有错误,欢迎指正、共同提高。原文:https://www.cnblogs.com/juneling/p/9149969.html

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

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 ]

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 传输过程数值模拟学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档