2013-03-15 49 views
0

由數組構成的變量作爲指向數組的指針以及它們何時充當數組副本?在javascript中處理數組的副本

例如,如果我有一個數組名爲Array1

a1=Array1;  

a1複印件或指針數組。

如果我修改a1它是否也會修改Array1。通過修改我的意思是改變一個值,將某些東西推入數組,排序或者其他可以修改數組的方式。

謝謝,

+1

'x = [1,2,3]; y = x; y [0] = 7; console.log(x)'會輸出'7,2,3'。 JS中的數組是對象,當你通過'newobj = origobj'複製一個對象時,你只是創建一個引用。你需要克隆數組對象來創建一個真正獨立的副本。 – 2013-03-15 21:56:33

回答

1

JavaScript中的變量持有對數組的引用。

如果將變量值與arr2 = arr1複製,則將引用複製到同一個數組。因此,對arr2的任何更改都將更改爲arr1

如果想要另一個變量保存到一個副本的引用,這樣你就可以改變第二陣列,而不改變第一個,使用slice

var arr2 = arr1.slice(); 
+0

我不記得爲什麼,但我認爲你希望它是'arr1.slice(0)' – rodneyrehm 2013-03-15 21:56:58

+0

你可能還想指出'.slice()'只創建一個* shallow *的數組副本。 – rodneyrehm 2013-03-15 21:58:16