javascript合並兩個數組


在開發的過程中,我們很多時候會遇到需要將兩個數組合並成一個數組的情況出現。

var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];

// 將arr1和arr2合並成為[1, 2, 3, 4, 5, 6]

這里總結一下在JavaScript中合並兩個數組的方法。

for循環數組

這個方式是最簡單的,也是最容易實現的。

var arr3 = [];

// 遍歷arr1
for (var i = 0; i < arr1.length; i++) {
    arr3.push(arr1[i]);
}

// 遍歷arr2
for (var j = 0; j < arr2.length; j++) {
    arr3.push(arr2[j]);
}

console.log(arr3); // [1,2,3,4,5,6]

另外也可以用增強型for循環或forEach()方法去實現。

for循環這種方式幾乎沒有任何問題,只是很多追求精簡編程的人會鄙視這種方式(攤手)。

concat()方法

JavaScript的Array對象中提供了一個concat()方法,作用是連接兩個或更多的數組,並返回一個新的數組。

var arr3 = arr1.concat(arr2);

console.log(arr3);
// [1,2,3,4,5,6]

要注意的是,concat()方法不會改變原數組,而是返回一個新的數組。這樣,當我們需要進行多次數組合並的時候,就會造成內存浪費。

apply()方法

函數的apply方法有一個特性,那就是func.apply(obj,argv),argv是一個數組。所以我們可以利用這點。

arr1.push.apply(arr1, arr2);

調用arr1.push這個函數實例的apply()方法,同時把arr1、arr2當作參數傳入,這樣arr1.push這個方法就會遍歷arr1和arr2數組的所有元素,達到合並的效果。

簡單理解就是,上面這段代碼可以看做是:

arr1.push(4, 5, 6);

這種方式只用一行代碼就解決了問題,可以說非常6了。

總結

上面三種方法在常規使用上其實並沒有區別,只是要另外注意兩個小問題:

1.以上3種合並方法在舉例的時候並沒有考慮過兩個原數組誰的長度更小,好的做法是預先判斷兩個原數組哪個更大,然后使用大數組合並小數組,這樣就能減少了數組元素操作的次數,提高了代碼的執行效率。

2.有時候我們既不希望原數組(arr1、arr2)改變,又不想手動新增一個變量,這時就只能使用concat()方法了。

 

"生命中曾擁有過的所有燦爛,可能終究都需要用寂寞去償還。"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM