AS3最快的合并多个阵列方式 [英] AS3 Fastest way to merge multiple arrays

查看:213
本文介绍了AS3最快的合并多个阵列方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试着写,我可以指定数组的任何数量的函数,返回值将是包含所有指定数组内容的数组。

我已经做到了这一点,但似乎做的很慢和丑陋的方式:

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆