网站如何备案icp备案,aso优化排名,网站建设调查问卷,上海企业宣传片制作哪家好转载自 探讨JS合并两个数组的方法我们在项目过程中#xff0c;有时候会遇到需要将两个数组合并成为一个的情况。
比如#xff1a;
var a [1,2,3];
var b [4,5,6];有两个数组a、b#xff0c;需求是将两个数组合并成一个。方法如下#xff1a;
1、concat
js的Array对象提供…转载自 探讨JS合并两个数组的方法我们在项目过程中有时候会遇到需要将两个数组合并成为一个的情况。
比如
var a [1,2,3];
var b [4,5,6];有两个数组a、b需求是将两个数组合并成一个。方法如下
1、concat
js的Array对象提供了一个叫concat()方法连接两个或更多的数组并返回结果。
var c a.concat(b);//c[1,2,3,4,5,6]这里有一个问题concat方法连接a、b两个数组后a、b两个数组的数据不变同时会返回一个新的数组。这样当我们需要进行多次的数组合并时会造成很大的内存浪费所以这个方法肯定不是最好的。
2、for循环
大概的思路是遍历其中一个数组把该数组中的所有元素依次添加到另外一个数组中。直接上代码
for(var i in b){a.push(b[i]);
}
这样的写法可以解决第一种方案中对内存的浪费但是会有另一个问题丑这么说不是没有道理如果能只用一行代码就搞定岂不快哉~
3、apply
函数的apply方法有一个特性那就是func.apply(obj,argv)argv是一个数组。所以我们可以利用这点直接上代码
a.push.apply(a,b);
调用a.push这个函数实例的apply方法同时把b当作参数传入这样a.push这个方法就会遍历b数组的所有元素达到合并的效果。
这里可能有点绕我们可以把b看成[4,5,6]变成这样
a.push.apply(a,[4,5,6]);
然后上面的操作就等同于
a.push(4,5,6);
这样就很清楚了
另外还要注意两个小问题
1以上3种合并方法并没有考虑过a、b两个数组谁的长度更小。
所以好的做法是预先判断a、b两个数组哪个更大然后使用大数组合并小数组这样就减少了数组元素操作的次数
2有时候我们不希望原数组a、b改变这时就只能使用concat了。补充新知识
var a[1,2]var b[3,4]a.push(...b) //es2015语法...将数组转成序列