Flash Lite 2 |
|||
| Flash Lite 2.x ActionScript-Referenzhandbuch > ActionScript-Klassen > Array > sortOn (Array.sortOn-Methode) | |||
Sortiert die Elemente in einem Array nach mindestens einem Feld im Array. Das Array muss folgende Merkmale aufweisen:
Wenn Sie mehrere fieldName-Parameter übergeben, stellt das erste Feld das primäre Sortierfeld dar, das zweite Feld das nächste Sortierfeld usw. Flash sortiert nach Unicode-Werten. (ASCII ist eine Untergruppe von Unicode.) Wenn eines der zu vergleichenden Elemente das im fieldName-Parameter angegebene Feld nicht enthält, gilt das Feld als undefined, und die Elemente werden im sortierten Array ohne bestimmte Reihenfolge nacheinander platziert.
In der Standardeinstellung funktioniert Array.sortOn() wie in der folgenden Liste beschrieben:
Mithilfe des options-Parameters können Sie das Standardsortierverhalten ändern. Wenn Sie ein einfaches Array (z. B. ein Array mit nur einem Feld) sortieren oder eine nicht vom options-Parameter unterstützte Sortierreihenfolge festlegen möchten, verwenden Sie Array.sort().
Wenn Sie mehrere Flags übergeben möchten, trennen Sie diese mithilfe des bitweisen OR-Operators (|):
my_array.sortOn(someFieldName, Array.DESCENDING | Array.NUMERIC);
Verfügbarkeit: ActionScript 1.0, Flash Lite 2.0
fieldName:Object - Ein String, der ein Feld mit einem Sortierwert definiert, oder ein Array, in dem das erste Element das primäre Sortierfeld, das zweite Element das sekundäre Sortierfeld darstellt usw.
options:Object [optional] - Durch den bitweisen OR-Operator | voneinander getrennte Zahlen oder Namen definierter Konstanten, die das Verhalten der Sortierung ändern. Folgende Werte sind für den options-Parameter zulässig:
Array.CASEINSENSITIVE oder 1Array.DESCENDING oder 2Array.UNIQUESORT oder 4Array.RETURNINDEXEDARRAY oder 8Array.NUMERIC oder 16Codehinweise sind aktiviert, wenn Sie die Stringform des Parameters (z. B. DESCENDING) anstelle der numerischen Form (2) verwenden.
Array - Der Rückgabewert hängt, wie in der folgenden Liste beschrieben, davon ab, ob Parameter übergeben werden.
options den Wert 4 oder Array.UNIQUESORT angeben und mindestens zwei zu sortierende Elemente identische Sortierfelder aufweisen, gibt Flash den Wert 0 zurück, ändert das Array jedoch nicht. options den Wert 8 oder Array.RETURNINDEXEDARRAY angeben, gibt Flash ein Array zurück, das die Ergebnisse der Sortierung wiedergibt, ändert das Array jedoch nicht. Im folgenden Beispiel wird ein neues Array erstellt und nach den Feldern name und city sortiert. In der ersten Sortierung wird name als erster und city als zweiter Sortierwert verwendet. In der zweiten Sortierung wird city als erster und name als zweiter Sortierwert verwendet.
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);
}
// Ergebnis:
// 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);
}
// Ergebnis:
// 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);
}
// Ergebnis:
// john, kansas city
// bob, omaha
// john, omaha
Das folgende Objekt-Array wird in den folgenden Beispielen verwendet, die der Veranschaulichung der Verwendung des options-Parameters dienen:
var my_array:Array = new Array();
my_array.push({password: "Bob", age:29});
my_array.push({password: "abcd", age:3});
my_array.push({password: "barb", age:35});
my_array.push({password: "catchy", age:4});
Eine Standardsortierung nach dem password-Feld führt zu folgenden Ergebnissen:
my_array.sortOn("password");
// Bob
// abcd
// barb
// catchy
Eine Sortierung nach dem password-Feld ohne Beachtung der Groß- und Kleinschreibung führt zu folgenden Ergebnissen:
my_array.sortOn("password", Array.CASEINSENSITIVE);
// abcd
// barb
// Bob
// catchy
Eine Sortierung nach dem password-Feld in absteigender Reihenfolge ohne Beachtung der Groß- und Kleinschreibung führt zu folgenden Ergebnissen:
my_array.sortOn("password", Array.CASEINSENSITIVE | Array.DESCENDING);
// catchy
// Bob
// barb
// abcd
Eine Standardsortierung nach dem age-Feld führt zu folgenden Ergebnissen:
my_array.sortOn("age");
// 29
// 3
// 35
// 4
Eine numerische Sortierung nach dem age-Feld führt zu folgenden Ergebnissen:
my_array.sortOn("age", Array.NUMERIC);
// my_array[0].age = 3
// my_array[1].age = 4
// my_array[2].age = 29
// my_array[3].age = 35
Eine numerische Sortierung nach dem age-Feld in absteigender Reihenfolge führt zu folgenden Ergebnissen:
my_array.sortOn("age", Array.DESCENDING | Array.NUMERIC);
// my_array[0].age = 35
// my_array[1].age = 29
// my_array[2].age = 4
// my_array[3].age = 3
Beim Verwenden der Sortieroption Array.RETURNEDINDEXARRAY müssen Sie den Rückgabewert einem anderen Array zuweisen. Das ursprüngliche Array wird nicht geändert.
var indexArray:Array = my_array.sortOn("age", Array.RETURNINDEXEDARRAY);
| bitweiser OR-Operator, sort (Array.sort-Methode)