javascript 两个 数组 怎么 合并 显示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 两个 数组 怎么 合并 显示相关的知识,希望对你有一定的参考价值。
为什么数组合并方法不行,如下:
<script type="text/javascript">
var array1 = new Array(1,2,3); //第1数组
var array2 = new Array(4,5,6); //第2数组
var array = new Array(); //存放合并后的数组
array.concat(array1,array2); //数组1,2合并方法一
document.write("<hr />");
document.write(" ||| ");
document.write(array1); //显示数组1
document.write("<br /> ||| ");
document.write(array2); //显示数组2
document.write("<br /> ||| ");
document.write("第一种合并:"+array); //显示合并后的数组
document.write("<br /> ||| ");
document.write("第二种合并:"+array1.concat(array2)); //数组1,2合并方法二
document.write("<hr />");
</script>
通过concat方法进行数组合并.
var mergeTo = [4,5,6],mergeFrom = [7,8,9]; //定义2个要合并的数组mergeTo和mergeFrommergeTo = mergeTo.concat(mergeFrom); //mergeTo的结果是[4, 5, 6, 7, 8, 9]
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法
arrayObject.concat(arrayX,arrayX,......,arrayX)
参数
描述
arrayX 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。
返回值
返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
参考技术Aconcat 方法只是给你返回合并后的字符串。并不是对你的 array 做修改操作。
定义和用法 (w3c 官方)
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
解决办法:
1.
array = array.concat(array1,array2);将合并后的数组或字符重新赋值。
2.
for(x in array1)array.push(array1[x]);
for(y in array2)
array.push(array2[y]);
数组有个方法是push().
定义和用法 (w3c 官方)
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
参考链接: http://www.w3cschool.cn/jsref_obj_array.html
参考技术B 你写错了array = array1.concat(array2);本回答被提问者采纳
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()方法了。
"生命中曾拥有过的所有灿烂,可能终究都需要用寂寞去偿还。"
以上是关于javascript 两个 数组 怎么 合并 显示的主要内容,如果未能解决你的问题,请参考以下文章
在 JavaScript 中合并两个对象(NodeList)数组