我想将两个数组连接成一个。我发现两个功能可以完成这项工作;一个是jQuery.merge()
,另一个是函数concat()
内置的JavaScript。他们似乎做了同样的事情,我找到了this。它说:“Merge创建了一个更小的足迹,因为它循环遍历原始数组并添加新项目.Concat是一个内置的Javascript函数,应该更快,但占用空间更大。”我不确定这个陈述是否属实,还有其他差异吗?
答案 0 :(得分:10)
这句话是正确的,两个函数实际上并没有做同样的事情,一个将两个数组合并为一个(第一个参数),第二个从两个数组合建一个新数组。
它所指的“足迹”是随时使用的最大内存量。由于merge,只是复制第二个数组,它应该使用更少的内存,因为在任何时候,它只需要在内存中有2个数组。
内置函数需要有3个数组,新数组必须是连接的两个数组的大小。
假设数组A和B中有1000个元素,合并后的数组为C:
如果使用大量内存,可以更快地减少内存,减少移动也可以更快。
答案 1 :(得分:1)
在tmaster的情况下,他使用jQuery.merge()来合并2个数组。实际上,JQuery.merge可以用来合并jQuery Object(jQuery Object也有长度prop)和Array.Here是jQuery.merge()的代码:
merge: function( first, second ) {
var len = +second.length,
j = 0,
i = first.length;
for ( ; j < len; j++ ) {
first[ i++ ] = second[ j ];
}
first.length = i;
return first;
},
因此,对于JQuery对象具有length属性,它可以使用merge将第二个JQuery Object attr(如0,1)复制到第一个JQuery对象。这是一个例子:
pushStack: function( elems ) {
// Build a new jQuery matched element set
var ret = jQuery.merge( this.constructor(), elems );
...
return ret;
},
this.constructor()返回一个jQuery对象,也是elems。但concat不能,那只能用于Array.This也是concat和JQuery.merge之间的差异。