1.concat() 不改变自身
有时候我们不希望原数组改变,这时就使用concat
var c = a.concat(b)
concat方法连接a、b两个数组后,a、b两个数组的数据不变,同时会返回一个新的数组。这样当需要进行多次的数组合并时,会造成很大的内存浪费
2.for循环遍历
遍历其中一个数组,把该数组中的所有元素依次添加到另外一个数组中
预先判断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;
}