sortOn (Array.sortOn-Methode)

public sortOn(fieldName:Object, [options:Object]) : Array

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

Parameter

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:

Codehinweise sind aktiviert, wenn Sie die Stringform des Parameters (z. B. DESCENDING) anstelle der numerischen Form (2) verwenden.

Rückgabewerte

Array - Der Rückgabewert hängt, wie in der folgenden Liste beschrieben, davon ab, ob Parameter übergeben werden.

Beispiel

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

Siehe auch

| bitweiser OR-Operator, sort (Array.sort-Methode)