AS3中的多维数组排序

时间:2011-12-07 16:15:11

标签: arrays flash actionscript-3 sorting multidimensional-array

在AS3中进行多重排序的最简单方法是什么。类似于PHP中的array_multisort()的东西......像这样:sort a multidimentional array using array_multisort

我有什么

var COUNTRIES:Array = [["AD","Andorra"],["AE","United Arab Emirates"],["AF","Afghanistan"],["AG","Antigua & Barbuda"],["AI","Anguilla"]];

..循环输出

Andorra
United Arab Emirates
Afghanistan
Antigua & Barbuda
Anguilla

...我需要的是根据每个的第二个索引对其进行排序,所以我得到了

Afghanistan
Andorra
Anguilla
Antigua & Barbuda
United Arab Emirates

4 个答案:

答案 0 :(得分:6)

很简单:

 COUNTRIES.sortOn("1");

它的工作原理是因为您可以使用字符串访问数组索引,就像属性array["0"]一样。因此sortOn使用每个内部数组的"1"'属性'进行排序。

答案 1 :(得分:0)

实现此目的的一种方法是使用对象数组

  var countries:Array = [{abb:"AD", name:"Andorra"} //etc...];

然后,您可以使用数组sortOn方法。

答案 2 :(得分:0)

您最好创建一个Objects数组而不是数组数组,然后使用Array.sortOn

var COUNTRIES : Array = 
    [ { short:"AD",long:"Andorra"}, 
      {short:"AE", long:"United Arab Emirates"}, 
      {short:"AF", long:"Afghanistan"}// and so forth
    ];

COUNTRIES.sortOn ("long"); // sorts by long name
COUNTRIES.sortOn ("short"); // sorts by short name

答案 3 :(得分:0)

您可以使用Array.sort()方法。

var COUNTRIES:Array = [[AD,Andorra],[AE,United Arab Emirates],[AF,Afghanistan],[AG,Antigua & Barbuda],[AI,Anguilla]];

COUNTRIES = COUNTRIES.sort(sortOnName);

function sortOnName(a:Array, b:Array):Number {
    var aName:String = a[1];
    var bName:String = b[1];

    if(aName > bName) {
        return 1;
    } else if(aName < bName) {
        return -1;
    } else  {
        //aName == bName
        return 0;
    }
}