2011-12-07 12 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 

は...ソートすることですそれはそれぞれの2番目の指標に対して反対ですので、私は得る

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

また、docs([Array#sortOn()](http://help.adobe.com/jp/FlashPlatform/reference/actionscript/3/Array.html#sortOn%28%29)) – RIAstar

+0

OMGをお試しください。 ..私はとても不自由だ。 32bitkidありがとうございました。それは働いた...私はそれを投票することができますので、答えを広告。リンクされた答えに – pioSko

答えて

6

それは簡単です:

COUNTRIES.sortOn("1"); 

あなたが使用して配列のインデックスにアクセスすることができますので、それは動作しますプロパティのように文字列:array["0"]。したがって、sortOnはソートに各内側配列の"1" 'プロパティ'を使用します。

0

これを達成する方法の1つは、オブジェクトの配列

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; 
    } 
}