AS3最快的合并多个阵列方式 [英] AS3 Fastest way to merge multiple arrays
问题描述
我试着写,我可以指定数组的任何数量的函数,返回值将是包含所有指定数组内容的数组。
我已经做到了这一点,但似乎做的很慢和丑陋的方式:
VAR AR1:数组= [1,2,3,4,5,6,7,8,9]
VAR AR2:数组= ['A','B','C','D','E','F','G','H'];
功能合并(...多):数组
{
VAR出来:字符串=;
每个(VAR我:多阵列)
{
析+ = i.join(,);
}
返回out.split(,);
}
跟踪(合并(AR1,AR2));
有没有实现这一目标的一个内在和更高效的/好办法?结果并不需要在相同的顺序与输入 - 完全未排序是细
您可以使用<一个href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#concat%28%29">concat.
如果该参数指定了一个数组,数组中的元素连接在一起。
VAR AR1:数组= [1,2,3,4,5,6,7,8,9]
VAR AR2:数组= ['A','B','C','D','E','F','G','H'];
VAR AR3:数组= ['我','J','K','L'];
VAR AR4 = ar1.concat(AR2,AR3); //或:ar1.concat(AR2).concat(AR3);
要做出一个阵列出2维数组,你可以使用此功能:
私有函数扁平化(数组:数组):数组{
VAR结果:数组= [];
对于(VAR我:= 0; I&LT; arrays.length;我++){
结果= result.concat(数组[我]);
}
返回结果;
}
// 呼叫
变种AR4 = [AR1,AR2,AR3];
VAR AR5 =扁平化(AR4);
您还可以使用可变参数合并多个阵列:
私有函数合并(...阵列):数组{
VAR结果:数组= [];
对于(VAR我:= 0; I&LT; arrays.length;我++){
结果= result.concat(数组[我]);
}
返回结果;
}
// 呼叫
变种AR5 =合并(AR1,AR2,AR3);
I'm trying to write a function where I can specify any amount of array, and the return value will be an array containing the contents of all of the specified arrays.
I've done this, but it seems like a really slow and ugly way of doing it:
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));
Is there an inbuilt and more efficient / nice way of achieving this? The result does not need to be in the same order as the input - completely unsorted is fine.
You can use concat.
If the parameters specify an array, the elements of that array are concatenated.
var ar1:Array = [1,2,3,4,5,6,7,8,9];
var ar2:Array = ['a','b','c','d','e','f','g','h'];
var ar3:Array = ['i','j','k','l'];
var ar4 = ar1.concat(ar2, ar3); // or: ar1.concat(ar2).concat(ar3);
To make a single array out of a 2 dimensional array you can use this function:
private function flatten(arrays:Array):Array {
var result:Array = [];
for(var i:int=0;i<arrays.length;i++){
result = result.concat(arrays[i]);
}
return result;
}
// call
var ar4 = [ar1, ar2, ar3];
var ar5 = flatten(ar4);
You can also use varargs to merge multiple arrays:
private function merge(...arrays):Array {
var result:Array = [];
for(var i:int=0;i<arrays.length;i++){
result = result.concat(arrays[i]);
}
return result;
}
// call
var ar5 = merge(ar1, ar2, ar3);
这篇关于AS3最快的合并多个阵列方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!