我想编写一个函数,可以指定任意数量的数组,并且返回值将是包含所有指定数组内容的数组。
我已经做到了,但这似乎是一种非常缓慢且难看的方法:
var ar1:Array = [1,2,3,4,5,6,7,8,9];
var ar2:Array = ['a','b','c','d','e','f','g','h'];
function merge(...multi):Array
{
var out:String = "";
for each(var i:Array in multi)
{
out += i.join(',');
}
return out.split(',');
}
trace(merge(ar1, ar2));
有没有内建的更有效/更好的方法来实现这个?结果不需要与输入相同的顺序-完全无序是可以的。
concat
创建一个新的数组,而我们知道new
操作从性能角度来看是昂贵的操作。只需使用push
(请参见我的答案)。 - Narekconcat
的特殊之处在于,当作为参数传入一个数组时,它会将所有元素添加到新数组中。如果使用 push,则只会创建一个二维数组。如果使用正确(尚未看到任何基准测试),则 push 可能更快,但在此函数中无法与 concat 互换。 - kapex