js如何實現拷貝一個陣列

admin發表於2017-03-26

如何拷貝一個陣列元素,對於初學者來說可能存在著較大的誤解,這主要是對值型別和引用型別不夠了解的緣故。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var a=[1,2,3];
var b=a;

很多初學者可能認為上面的程式碼會拷貝一個陣列,其實並非如此,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var a=[1,2,3];
var b=a;
a.length=2;
console.log(b);

從上面的程式碼的輸出結果可以看出,修改陣列a的長度,陣列b也會跟著變化,這是因為a和b根本就是同一個陣列,因為變數a和變數b中儲存的只是陣列物件的引用,也就是記憶體地址,所以b=a,只是將陣列物件的引用傳遞給b。

下面提供兩種拷貝陣列的方式:

方式一:

[JavaScript] 純文字檢視 複製程式碼
var a=[1,2,3];
console.log(a.slice(0));

方式二:

[JavaScript] 純文字檢視 複製程式碼
var a=[1,2,3];
console.log(a.concat());

相關文章