这篇文章主要介绍了JS合并两个数组的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

本文主要介绍JS合并两个数组的三种方法的详细说明,并通过示例代码进行详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。

两个数字需要合并成一个的情况。例如:

var a = [1,2,3];var b = [4,5,6];

有两个数组A和B,要求是把两个数合成一个。该方法如下:

1、串联

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方法有一个特性,就是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)上述三种合并方法都没有考虑A和B两个数组哪个长度更小。

所以提前判断A和B两个数组哪个更大,然后用大数组合并小数组,这样就减少了数组元素的运算次数,是个不错的办法!

2)有时候我们不希望原数组(A,B)改变,那么就只能用concat。

这就是本文的全部内容。希望对大家的学习有帮助,也希望大家能支持一下搜源网。