Klasa: Array
Kompatybilność: ActionScript 2.0, Flash6+
Sortuje elementy w tablicy odwołując się do jednego lub wielu pól dla obiektów tablicy. Metoda jest najczęściej używana dla tablic asocjacyjny, czyli z więcej niż jedną wartością dla jednego wpisu w tablicy.
Domyślnie, Array
.sortOn()
działa według zasad wymienionych poniżej:
- Sortowanie odróżnia wielkość liter (Z poprzedza a).
- Sortowanie jest w kolejności alfabetycznej (a poprzedza b).
- Jeśli w tablicy są dwa takie same wartości porównywane, wtedy metoda wybiera losową wartość jaką pierwszą, a później powtórzoną.
- Pola liczbowe są sortowane jakby były ciągami znaków, czyli 100 będzie poprzedzało 99, ponieważ "1" jest mniejszym ciągiem niż "9".
Flash Player 7 dodaje parametr opcje
, które może nadpisywac domyślne ustawienia tego sortowania. Można używać połączonych właściwości (widocznych w tabeli) oddzielając je miedzy sobą znakiem "|" czyli logicznego OR (LUB).
moj_array.sortOn(nazwaPola, Array.DESCENDING | Array.NUMERIC);
Flash Player 8 wprowadził możliwość sortowania, każdego pola z wpisu z tabeli osobno, np podany kod wykona Array.DESCENDING dla pola o nazwie a, natomiast Array.NUMERIC zadziała dla pola o nazwie b.
Array.sortOn (["a", "b", "c"], [Array.DESCENDING, Array.NUMERIC, Array.CASEINSENSITIVE]);
Jeśli chcesz posortować prosto tablicę z jedną wartością dla wpisu, to użyj Array.sort() zamiast tej metody.
Właściwości dla klasy Array
Typ |
Nazwa |
Opis |
---|---|---|
|
CASEINSENSITIVE |
Podczas sortowania wielkość znaków jest ignorowana. |
|
DESCENDING |
Właściwość dla sortowania, w kolejności odwrotnej od pierwotnej (tak samo jak desc w sql). |
|
NUMERIC |
Właściwość dla sortowania, ustawia sortowanie numerowe (nie dla ciągów znaków) np 1, 2, 3. |
|
RETURNINDEXEDARRAY |
Ustawia, że sortowania zwróci zindeksowaną tablicę jako wynik dla metod: sort() lub sortOn(). |
|
UNIQUESORT |
Właściwość dla sortowania, stała ta określa unikalne sortowanie wymogu. |
Przykład:
//Przykład 1 - ilustrowanie prostego sortowania dla sortOn()
var rec_array:Array = new Array();
rec_array.push({name: "john", city: "omaha", zip: 68144});
rec_array.push({name: "john", city: "kansas city", zip: 72345});
rec_array.push({name: "bob", city: "omaha", zip: 94010});
for(i=0; i<rec_array.length; i++){
trace(rec_array[i].name + ", " + rec_array[i].city);
}
// Zwróci:
// john, omaha
// john, kansas city
// bob, omaha
rec_array.sortOn(["name", "city"]);
for(i=0; i<rec_array.length; i++){
trace(rec_array[i].name + ", " + rec_array[i].city);
}
// Zwróci:
// bob, omaha
// john, kansas city
// john, omaha
rec_array.sortOn(["city", "name" ]);
for(i=0; i<rec_array.length; i++){
trace(rec_array[i].name + ", " + rec_array[i].city);
}
// Zwróci:
// john, kansas city
// bob, omaha
// john, omaha
//Przykład 2 - dodawania obiektów z parametrami do tablicy:
var moj_array:Array = new Array();
moj_array.push({haslo: "Bob", wiek:29});
moj_array.push({haslo: "abcd", wiek:3});
moj_array.push({haslo: "barb", wiek:35});
moj_array.push({haslo: "catchy", wiek:4});
//domyślne sprtowanie metody zwróci:
moj_array.sortOn("haslo");
// Bob
// abcd
// barb
// catchy
//sortowanie nie zwraca uwagę na wielkość znaków:
moj_array.sortOn("haslo", Array.CASEINSENSITIVE);
// abcd
// barb
// Bob
// catchy
//sortowanie odwrotne oraz bez brania pod uwagę wielkości znaków:
moj_array.sortOn("haslo", Array.CASEINSENSITIVE | Array.DESCENDING);
// catchy
// Bob
// barb
// abcd
//domyśle sortowanie dla wieku:
moj_array.sortOn("wiek");
// 29
// 3
// 35
// 4
//sortowanie numeryczne dla wieku:
moj_array.sortOn("wiek", Array.NUMERIC);
// moj_array[0].wiek = 3
// moj_array[1].wiek = 4
// moj_array[2].wiek = 29
// moj_array[3].wiek = 35
//sortowanie numeryczne odwrotne:
moj_array.sortOn("wiek", Array.DESCENDING | Array.NUMERIC);
// moj_array[0].wiek = 35
// moj_array[1].wiek = 29
// moj_array[2].wiek = 4
// moj_array[3].wiek = 3
//kiedy yżywasz Array.RETURNEDINDEXARRAY sortowania opcji, musisz wtedy zadeklarować zwracaną wartość do innej tablicy. Oryginalna tablica nie jest modyfikowana.
var indexArray:Array = moj_array.sortOn("wiek", Array.RETURNINDEXEDARRAY);
Listing
Ranga: Administrator serwisu Punktów: 0