1.concat()?不改變自身
有時候我們不希望原數組改變,這時就使用concat
var c = a.concat(b)
concat方法連接a芋浮、b兩個數組后抱环,a、b兩個數組的數據不變纸巷,同時會返回一個新的數組镇草。這樣當需要進行多次的數組合并時,會造成很大的內存浪費
2.for循環(huán)遍歷
遍歷其中一個數組瘤旨,把該數組中的所有元素依次添加到另外一個數組中
預先判斷a梯啤、b哪個數組更大,然后使用大數組合并小數組存哲,這樣就減少了數組元素操作的次數
3.apply
利用apply參數是數組的特性:func.apply(obj,arg) arg是一個數組
a.push.apply(a,b);
調用a.push這個函數實例的apply方法因宇,同時把b當作參數傳入,這樣a.push這個方法就會遍歷b數組的所有元素達到合并的效果祟偷。
4.擴展運算符
var a = [1,2,3];
var b = [4,5,6];
var c = [...a,...b]
兩個升序數組合并
function merge(arr1,arr2){
????return??arr1.concat(arr2).sort((a,b)=>a-b)
}
function merge(arr1,arr2){
????let i = 0;
????let j = 0;
????let res = []
????while(i<arr1.length && j<arr2.length){
? ?????if(arr1[i]<arr2[j])res.push[arr1[i++]]
? ? ????else res.push[arr2[j++]]
????}
????if(i<arr1.length) res.concat(arr1.slice(i))
????if(j<arr2.length) res.concat(arr2.slice(j))
????return res;
}