当前位置: 首页 > Web前端 > JavaScript

JS合并两个数组的方法

时间:2023-03-27 16:35:35 JavaScript

在项目中,我们有时候会遇到需要将两个数组合并为一个的情况。例如:vara=[1,2,3];变量b=[4,5,6];有两个数组a和b,要求是将两个数组合二为一。方法如下:1.concatjs的Array对象提供了concat()方法,连接两个或多个数组并返回结果。varc=a.concat(b);//c=[1,2,3,4,5,6];这里有个问题,concat方法连接两个数组a和b后,两个数组a和b的数据不变,返回一个新的数组。这样当我们需要合并多个数组时,会造成大量的内存浪费,所以这种方式肯定不是最好的。2、for循环的大致思路是:遍历其中一个数组,将数组中的所有元素依次添加到另一个数组中。直接上代码:for(variinb){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.推(4,5,6);这很清楚!  另外需要注意两个小问题:  1)上面的三种合并方法都没有考虑到a和b两个数组中谁的长度更小。  所以一个好的办法就是预先判断a和b两个数组哪个大,然后用大数组合并小数组,这样就减少了数组元素的操作次数!  2)有时候我们不想让原来的数组(a,b)发生变化,那就只能用concat了。