淺拷貝和深拷貝以及陣列去重示例

2022-08-19 13:12:09 字數 877 閱讀 8436

1.淺拷貝

var obj1 =

}var obj2 ={};

//淺拷貝只拷貝第一層屬性,引用型別資料位址是相同的---因此存在資料共享問題

//遍歷obj1

for (var key in

obj1)

//深拷貝---解決資料共享問題

function deepcopy(source, target) ; //

判斷是陣列還是物件

deepcopy(source[key], target[key]);//

遞迴---對source[key]一層層拷貝

} else}}

}//測試

deepcopy(obj1, obj2);

console.log(obj1);

obj2.skill.push("ui");

console.log(obj2);

測試圖示:

2.陣列去重

//

陣列去重---去除陣列中重複的資料

var arr = [10, 5, 2, 4, 10, 3, 2, 1, 4, 1, "a", "d", "a"];

function

distinctarray(arr)

}return

newarray;

}console.log(distinctarray(arr));

測試圖示:

深拷貝的 淺拷貝講解以及示例

含義 假設b複製了a,當修改a時,看b是否會發生變化,如果b也跟著變了,說明這是淺拷貝,如果b沒變,那就是深拷貝。關於棧堆,就要了解基本資料型別與引用資料型別,因為這些概念能更好的讓你理解深拷貝與淺拷貝 let a 0,1,2,3,4 b a console.log a b true a 0 1 c...

陣列拷貝(深拷貝 淺拷貝)

底層都是使用system.arraycopy object src,int srcpos,object dest,int destpos,int length 方法完成陣列元素拷貝任務的 方法說明 如果newlength original.length,那麼會將原陣列中前newlength個元素拷貝...

陣列深拷貝 物件的深拷貝 陣列去重

1 for 迴圈實現陣列的深拷貝 var arr 1,2,3,4,5,6 var arr2 copyarr arr function copyarr arr var obj2 copyobj obj function copyobj obj for var key in obj return res...