码迷,mamicode.com
首页 > 其他好文 > 详细

再次了解深浅拷贝问题

时间:2018-12-16 23:18:36      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:source   div   项目   形式   sig   color   json   turn   objc   

之前虽然看到好多关于这方面的问题,但是在实际项目中使用到的,都不是我之前简单了解的方法;深拷贝的方法有很多,但一般针对的是对象形式,所以当遇到json数组这样

的结构后,发现之前了解的方法都是不可行的;

当需要删除数组中某些数据时候,发现深复制后 的数据做删除操作后,原数据也发生改变,试了好几个拷贝方法包括最常用的Object.assign([],arr),concat等都不行,所以要了解下面这个方法:

var objDeepCopy = function (source) {
    var sourceCopy = source instanceof Array ? [] : {};
    for (var item in source) {
        sourceCopy[item] = typeof source[item] === ‘object‘ ? objDeepCopy(source[item]) : source[item];
    }
    return sourceCopy;
}
var objCopy = objDeepCopy(obj);
objCopy[0].a.a1[1] = "a13";
objCopy[1][1].e = "6";

 

再次了解深浅拷贝问题

标签:source   div   项目   形式   sig   color   json   turn   objc   

原文地址:https://www.cnblogs.com/naniandongzhi/p/10128031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!