我們在項目過程中荐绝,有時候會遇到需要將兩個數(shù)組合并成為一個的情況软舌。比如:
var a = [1,2,3];
var b = [4,5,6];
有兩個數(shù)組a识脆、b,需求是將兩個數(shù)組合并成一個恕曲。方法如下:
1、contact
js的Array對象提供了一個叫concat()方法渤涌,連接兩個或更多的數(shù)組佩谣,并返回結(jié)果。
var a = [1,2,3];
var b = [4,5,6];
var c = a.concat(b);//c=[1,2,3,4,5,6];
這里有一個問題实蓬,concat方法連接a茸俭、b兩個數(shù)組后,a安皱、b兩個數(shù)組的數(shù)據(jù)不變调鬓,同時會返回一個新的數(shù)組。這樣當(dāng)我們需要進行多次的數(shù)組合并時酌伊,會造成很大的內(nèi)存浪費袖迎,所以這個方法肯定不是最好的。
2、for循環(huán)
for(var i in b){
a.push(b[i]);
}
這樣的寫法可以解決第一種方案中對內(nèi)存的浪費燕锥,但是會有另一個問題:丑辜贵!這么說不是沒有道理,如果能只用一行代碼就搞定归形,豈不快哉~
3托慨、apply
函數(shù)的apply方法有一個特性,那就是func.apply(obj,argv)暇榴,argv是一個數(shù)組厚棵。所以我們可以利用這點,直接上代碼:
a.push.apply(a,b);
調(diào)用a.push這個函數(shù)實例的apply方法蔼紧,同時把婆硬,b當(dāng)作參數(shù)傳入,這樣a.push這個方法就會遍歷b數(shù)組的所有元素奸例,達到合并的效果彬犯。
上面的操作就等同于:
a.push(4,5,6);
4、擴展運算符
var a = [1,2,3];
var b = [4,5,6];
var newA = [...a,...b]