再次了解深浅拷贝问题

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