在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
答案 0 :(得分:6)
很简单:
COUNTRIES.sortOn("1");
它的工作原理是因为您可以使用字符串访问数组索引,就像属性array["0"]
一样。因此sortOn
使用每个内部数组的"1"
'属性'进行排序。
答案 1 :(得分:0)
答案 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;
}
}