javascript合并两个数组

在开发的过程中,我们很多时候会遇到需要将两个数组合并成一个数组的情况出现。

var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];

// 将arr1和arr2合并成为[1, 2, 3, 4, 5, 6]

这里总结一下在JavaScript中合并两个数组的方法。

for循环数组

这个方式是最简单的,也是最容易实现的。

var arr3 = [];

// 遍历arr1
for (var i = 0; i < arr1.length; i++) {
    arr3.push(arr1[i]);
}

// 遍历arr2
for (var j = 0; j < arr2.length; j++) {
    arr3.push(arr2[j]);
}

console.log(arr3); // [1,2,3,4,5,6]

另外也可以用增强型for循环或forEach()方法去实现。

for循环这种方式几乎没有任何问题,只是很多追求精简编程的人会鄙视这种方式(摊手)。

concat()方法

JavaScript的Array对象中提供了一个concat()方法,作用是连接两个或更多的数组,并返回一个新的数组。

var arr3 = arr1.concat(arr2);
console.log(arr3); // [1,2,3,4,5,6]

要注意的是,concat()方法不会改变原数组,而是返回一个新的数组。这样,当我们需要进行多次数组合并的时候,就会造成内存浪费。

apply()方法

函数的apply方法有一个特性,那就是func.apply(obj,argv),argv是一个数组。所以我们可以利用这点。

arr1.push.apply(arr1, arr2);

调用arr1.push这个函数实例的apply()方法,同时把arr1、arr2当作参数传入,这样arr1.push这个方法就会遍历arr1和arr2数组的所有元素,达到合并的效果。

简单理解就是,上面这段代码可以看做是:

arr1.push(4, 5, 6);

这种方式只用一行代码就解决了问题,可以说非常6了。

总结

上面三种方法在常规使用上其实并没有区别,只是要另外注意两个小问题:

1.以上3种合并方法在举例的时候并没有考虑过两个原数组谁的长度更小,好的做法是预先判断两个原数组哪个更大,然后使用大数组合并小数组,这样就能减少了数组元素操作的次数,提高了代码的执行效率。

2.有时候我们既不希望原数组(arr1、arr2)改变,又不想手动新增一个变量,这时就只能使用concat()方法了。

"生命中曾拥有过的所有灿烂,可能终究都需要用寂寞去偿还。"

原文地址:https://www.cnblogs.com/yanggb/p/11463434.html

时间: 2024-09-30 21:09:25

javascript合并两个数组的相关文章

js如何合并两个数组

js如何合并两个数组:本章节介绍一下如何合并两个数组,希望对大家有所帮助.实例代码:实例一: var arrOne=["蚂蚁部落","青岛市南区",3]; var arrTwo=["分享交流","antzone",600]; console.log(arrOne.concat(arrTwo)); console.log(arrOne); console.log(arrTwo); 由以上代码的输出结果可以看出concat()函数

合并两个数组 - concat()

使用 concat() 方法来合并两个数组. 编辑您的代码: <html> <body> <script type="text/javascript"> var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" var arr2 = new Array(3) arr2[0] = "James

合并两个数组

#include <iostream> using namespace std; int sortedInsert(int A[],int lenA,int B[],int lenB) { if(B == NULL) return lenA; int len = lenA + lenB; int indexNew = len-1; int indexA = lenA-1; int indexB = lenB-1; while( indexA>=0 && indexB>

合并两个数组的两种方式的异同

本文讨论合并数组的两种方式:$a+$b , array_merge($a,$b) 操作符+,在前一个数的基础上插入后一个数组,如果有相同的抛弃,而array_merge 是在前一个参数基础上插入后一个参数,如果有相同用的key 用后一个覆盖.实例如下: php > $a = array('a'=>'1','b'=>'2','c'=>'3'); php > $b = array('c'=>3,'d'=>'4','e'=>'5'); php > $c =

探讨JS合并两个数组的方法

我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况. 比如: 1 2 var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合并成一个.方法如下: 1.concat js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果. 1 var c = a.concat(b);//c=[1,2,3,4,5,6] 这里有一个问题,concat方法连接a.b两个数组后,a.b两个数组的数据不变,同时会返回一个新的数组.

编程练习:合并两个数组(包括三种快排程序)

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 /*确定快排1的分界值*/ 5 int partition1(int array[],int r,int m){ 6 int i,j=m,temp,flag1=0,flag2=0;//比较的数是大数时将flag1置1,也就是当遇到大数之后,再次遇到小数才进行前后交换: 7 //flag2为0时,j=i,第一次遇到大数时,把flag2置1;也就是说,j的初始值为参考值的坐标, 8 //当遇到

Javascript比较两个数组是否相等

javascript是不能直接比较两个数组是否相等的.例如: var a = [1,2,3];var b = [1,2,3]; alert(a == b); // false 结果是 false. 证明两个数组不能直接比较相等. 解决方法一: 先排序,再利用toString方法,比较.例如: var a = [1,2,3];var b = [1,2,3];alert(a.sort().toString() == b.sort().toString()); 结果为true 解决方法二: 直接toS

JS合并两个数组的方法

我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况. 比如: 1 2 var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合并成一个.方法如下: 1.concat js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果. 1 var c = a.concat(b);//c=[1,2,3,4,5,6] 这里有一个问题,concat方法连接a.b两个数组后,a.b两个数组的数据不变,同时会返回一个新的数组.

沫沫金:Java快速合并两个数组【绝技】

需求: 合并两个Object[] a 和Object[] b: 方案 List<Object[]> quotas = new ArrayList<Object[]>(); Object[] objs1 = quotas_1.get(i); Object[] objs2 =quotas_2.get(i); //合并多sheet页数据,切割行级合并 List list = new ArrayList(Arrays.asList(objs1)); list.addAll(Arrays.a