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



 
  
				

 
                             
 


 
                        
 
		 
	