再次了解深浅拷贝问题
Posted naniandongzhi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了再次了解深浅拷贝问题相关的知识,希望对你有一定的参考价值。
之前虽然看到好多关于这方面的问题,但是在实际项目中使用到的,都不是我之前简单了解的方法;深拷贝的方法有很多,但一般针对的是对象形式,所以当遇到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";
以上是关于再次了解深浅拷贝问题的主要内容,如果未能解决你的问题,请参考以下文章