我們在需要進行數組復制的時候可能會想到以下的方法
代碼
var arr1 = [1,2,3,4,5];var arr2 = [];arr2 = arr1;console.log(arr1);console.log(arr2);
執行結果如下:
[1, 2, 3, 4, 5][1, 2, 3, 4, 5]
在這個例子中,將數組arr1賦值給了另一個數組arr2。
查看執行結果,似乎復制了數組的內容并創建了相同的數組。
但是,由于數組是“引用類型”的數據,因此它不會復制該值,而只是共享存儲該值的內存的位置。
因此,我們編寫以下代碼
arr2.push(6); console.log(arr1);console.log(arr2);
執行結果如下
[1, 2, 3, 4, 5, 6][1, 2, 3, 4, 5, 6]
根據以上結果可以發現即使我們只給arr2添加新值6,但是數組arr1中也會添加一個6,這就是因為兩個
數組都只引用存儲值的位置,如果更改任一數組中的數據,兩者都會改變。
所以下面我們就來使用concat方法復制數組
我們來看具體示例
var arr1 = [1,2,3,4,5]; var arr2 = []; arr2 = arr1.concat();arr2.push(6); console.log(arr1);console.log(arr2);
執行結果如下
[1, 2, 3, 4, 5][1, 2, 3, 4, 5, 6]
要將另一個數組復制到數組arr2,只需要在復制源arr1中執行concat()即可。
新聞熱點
疑難解答