Сортировка многомерных массивов в AS3 - PullRequest
8 голосов
/ 07 декабря 2011

Какой самый простой способ сделать мультисортировку в AS3. Что-то похожее на array_multisort () в PHP ... например: сортировка многомерного массива с использованием 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 ]

6 голосов
/ 07 декабря 2011

Это просто:

 COUNTRIES.sortOn("1");

Это работает, потому что вы можете получить доступ к индексу массива, используя строку, как свойство: array["0"].Поэтому sortOn использует "1" свойство каждого внутреннего массива для сортировки.

0 голосов
/ 07 декабря 2011

Вы можете использовать метод 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;
    }
}
0 голосов
/ 07 декабря 2011

Лучше всего создать массив объектов вместо массива массивов, а затем использовать 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 голосов
/ 07 декабря 2011

Одним из способов достижения этого было бы использование массива объектов

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

Затем можно использовать метод Array sortOn .

...