在JS中,每個變量都是指向一個數據的地址,所以不能用簡單的=來拷貝數據。有時候深拷貝一個對象或者數組或者字典是剛需的,好像在JS中深拷貝是個問題?
好多來自谷歌百度的大佬們都說用JSON的```JSON.stringify()```把字典對象JSON化然後再```JSON.parse()```回來,但是一旦字典裏面是對象,就馬上不行了,考慮到每個Object的屬性是可讀取的,我嘗試用遞歸來實現深拷貝。
測試的情況不多,只是覆蓋了我剛需的部分,如果這種方式大佬們用不了或者複雜對象失效了請輕噴。
目前針對數組嵌套字典,字典嵌套數組,數組嵌套數組,字典嵌套字典,字典或數組嵌套一些對象做了測試,是沒問題的。
function arrayDeepCopy(obj){
if(obj instanceof Object){
let tmp;
if(obj instanceof Array){
tmp = obj.concat([]);
}else{
tmp={...obj};
}
for(let j in tmp){
tmp[i]=arrayDeepCopy(tmp[i])
}
return tmp;
}
return obj;
}