再次了解深浅拷贝问题

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

 

转载于:https://www.cnblogs.com/naniandongzhi/p/10128031.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值