2013-03-30 52 views
49

我想從現有數組中形成一個數組,因此我可以在不影響舊數組的情況下修改新數組。我意識到數組是可變的,這就是爲什麼新數組會影響舊數組。Javascript複製數組到新數組

E.g.

old = ["Apples", "Bananas"]; 
new = old; 

new.reverse(); 

老也被顛倒了。

在Python中,我可以只做new = list(old),但是做new = new Array(old);會將舊列表放入列表中。

+0

在ES6您可以使用傳播語法示例: ' var arrOld = [「蘋果」,「香蕉」]; var arrNew = [... arrOld];' – GibboK

回答

103

可以使用.slice方法:

var old = ["Apples", "Bananas"]; 
var newArr = old.slice(0); 
newArr.reverse(); 
// now newArr is ["Bananas", "Apples"] and old is ["Apples", "Bananas"] 

Array.prototype.slice返回一個陣列的一部分的淺表副本。給它0作爲第一個參數表示要返回的所有元素的副本(從索引0開始即是)

+0

謝謝!我會盡力回答。 – jdborg

+0

沒問題,很高興幫助。 –

+13

您可以使用'old.slice()',因爲0是默認值。參見[slice()docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice) –

9

請嘗試以下

newArray = oldArray.slice(0);