我們在需要進(jìn)行數(shù)組復(fù)制的時候可能會想到以下的方法
代碼
var arr1 = [1,2,3,4,5]; var arr2 = []; arr2 = arr1; console.log(arr1); console.log(arr2);
執(zhí)行結(jié)果如下:
[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
在這個例子中,將數(shù)組arr1賦值給了另一個數(shù)組arr2。
查看執(zhí)行結(jié)果,似乎復(fù)制了數(shù)組的內(nèi)容并創(chuàng)建了相同的數(shù)組。
但是,由于數(shù)組是“引用類型”的數(shù)據(jù),因此它不會復(fù)制該值,而只是共享存儲該值的內(nèi)存的位置。
因此,我們編寫以下代碼
arr2.push(6); console.log(arr1); console.log(arr2);
執(zhí)行結(jié)果如下
[1, 2, 3, 4, 5, 6] [1, 2, 3, 4, 5, 6]
根據(jù)以上結(jié)果可以發(fā)現(xiàn)即使我們只給arr2添加新值6,但是數(shù)組arr1中也會添加一個6,這就是因為兩個
數(shù)組都只引用存儲值的位置,如果更改任一數(shù)組中的數(shù)據(jù),兩者都會改變。
所以下面我們就來使用concat方法復(fù)制數(shù)組
我們來看具體示例
var arr1 = [1,2,3,4,5]; var arr2 = []; arr2 = arr1.concat(); arr2.push(6); console.log(arr1); console.log(arr2);
執(zhí)行結(jié)果如下
[1, 2, 3, 4, 5] [1, 2, 3, 4, 5, 6]
要將另一個數(shù)組復(fù)制到數(shù)組arr2,只需要在復(fù)制源arr1中執(zhí)行concat()即可。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com