2011-12-07 40 views
8

在AS3中執行多重排序最簡單的方法是什麼?在PHP的東西類似於在array_multisort()......這樣的:sort a multidimentional array using array_multisortAS3中的多維數組排序

我有什麼

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 
+3

嘗試'COUNTRIES.sortOn( '1')' 參見http://stackoverflow.com/questions/8008806/as3-sorting-an-array-of-nested-arrays/8010254# 8010254的細節。 –

+1

另請參閱:嘗試閱讀文檔([Array#sortOn()](http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/Array.html#sortOn%28%29)) – RIAstar

+0

OMG。 ..我太蹩腳了。謝謝你32bitkid。它的工作...廣告答案,我可以投票。 – pioSko

回答

6

很簡單:

COUNTRIES.sortOn("1"); 

它的工作,因爲你可以通過訪問數組索引一個字符串,就像一個屬性:array["0"]。因此sortOn使用每個內部數組的"1"「屬性」進行排序。

0

實現此目的的一種方法是使用物體陣列

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

然後,您可以使用數組sortOn方法。

0

您最好創建對象,而不是一個數組的數組的數組,然後使用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 
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; 
    } 
}