Mehrdimensionale Arrays

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Mehrdimensionale Arrays enthalten als Elemente andere Arrays, Nehmen wir als Beispiel eine Aufgabenliste, die als indiziertes String-Array gespeichert ist:

var tasks:Array = ["wash dishes", "take out trash"];

Wenn Sie für jeden Wochentag eine separate Aufgabenliste speichern möchten, können Sie ein mehrdimensionales Array mit jeweils einem Element für jeden Wochentag erstellen. Jedes Element enthält ein indiziertes Array, ähnlich dem tasks -Array, in dem die Aufgabenliste gespeichert ist. Sie können in mehrdimensionalen Arrays jede Kombination aus indizierten und assoziativen Arrays verwenden. Bei den Beispielen in den folgenden Abschnitten werden entweder zwei indizierte Arrays oder ein assoziatives Array mit indizierten Arrays verwendet. Sie können zu Übungszwecken andere Kombinationen verwenden.

Zwei indizierte Arrays

Wenn Sie zwei indizierte Arrays verwenden, können Sie das Ergebnis in einer Tabelle anzeigen. Die Elemente des ersten Arrays entsprechen den Zeilen der Tabelle und die Elemente des zweiten Arrays den Spalten.

Im folgenden mehrdimensionalen Array wird beispielsweise mit zwei indizierten Arrays eine Aufgabenliste für jeden Wochentag geführt. Das erste Array, masterTaskList , wird mit dem Konstruktor der Array-Klasse erstellt. Jedes Element des Arrays entspricht einem Wochentag, dabei steht die Indexposition 0 für Montag und die Indexposition 6 für Sonntag. Diese Elemente können Sie sich als Zeilen einer Tabelle vorstellen. Sie können eine Aufgabenliste für jeden Tag erstellen, indem Sie jedem der sieben Elemente ein Array-Literal zuweisen, das Sie im masterTaskList -Array erstellen. Die Array-Literale entsprechen den Spalten in der Tabelle.

var masterTaskList:Array = new Array(); 
masterTaskList[0] = ["wash dishes", "take out trash"]; 
masterTaskList[1] = ["wash dishes", "pay bills"]; 
masterTaskList[2] = ["wash dishes", "dentist", "wash dog"]; 
masterTaskList[3] = ["wash dishes"]; 
masterTaskList[4] = ["wash dishes", "clean house"]; 
masterTaskList[5] = ["wash dishes", "wash car", "pay rent"]; 
masterTaskList[6] = ["mow lawn", "fix chair"];

Mit dem Array-Zugriffsoperator ( [] ) können Sie auf die einzelnen Einträge in den Aufgabenlisten zugreifen. Das erste Klammerpaar gibt den Wochentag an, das zweite Klammerpaar die Aufgabenliste für den entsprechenden Tag. Wenn Sie beispielsweise die zweite Aufgabe der Liste für Mittwoch abrufen möchten, verwenden Sie die Indexposition 2 für Mittwoch und dann die Indexposition 1 für die zweite Aufgabe in der Liste.

trace(masterTaskList[2][1]); // output: dentist

Wenn Sie die erste Aufgabe der Liste für Sonntag abrufen möchten, verwenden Sie die Indexposition 6 für Sonntag und die Indexposition 0 für die erste Aufgabe in der Liste.

trace(masterTaskList[6][0]); // output: mow lawn

Assoziatives Array mit einem indizierten Array

Damit leichter auf die einzelnen Arrays zugegriffen werden kann, können Sie ein assoziatives Array für die Wochentage und ein indiziertes Array für die Aufgabenlisten verwenden. Durch Verwendung eines assoziativen Arrays muss nicht mit der Punktsyntax auf einen bestimmten Wochentag verwiesen werden, dies jedoch auf Kosten zusätzlicher Verarbeitungszeit beim Zugreifen auf alle Elemente des assoziativen Arrays. Im folgenden Beispiel wird ein assoziatives Array als Grundlage für eine Aufgabenliste verwendet, mit einem Schlüssel-Wert-Paar für jeden Wochentag:

var masterTaskList:Object = new Object(); 
masterTaskList["Monday"] = ["wash dishes", "take out trash"]; 
masterTaskList["Tuesday"] = ["wash dishes", "pay bills"]; 
masterTaskList["Wednesday"] = ["wash dishes", "dentist", "wash dog"]; 
masterTaskList["Thursday"] = ["wash dishes"]; 
masterTaskList["Friday"] = ["wash dishes", "clean house"]; 
masterTaskList["Saturday"] = ["wash dishes", "wash car", "pay rent"]; 
masterTaskList["Sunday"] = ["mow lawn", "fix chair"];

Durch die Punktsyntax wird der Code leserlicher, da so verschachtelte Klammerpaare vermieden werden können.

trace(masterTaskList.Wednesday[1]); // output: dentist 
trace(masterTaskList.Sunday[0]);// output: mow lawn

Sie können die Aufgabenliste mit einer for..in -Schleife durchlaufen, müssen jedoch anstelle der Punktsyntax den Array-Zugriffsoperator ( [] ) verwenden, um auf den jedem Schlüssel zugeordneten Wert zuzugreifen. Da masterTaskList ein assoziatives Array ist, werden die Elemente nicht unbedingt in der erwarteten Reihenfolge abgerufen, wie im folgenden Beispiel dargestellt:

for (var day:String in masterTaskList) 
{ 
    trace(day + ": " + masterTaskList[day]) 
} 
/* output: 
Sunday: mow lawn,fix chair 
Wednesday: wash dishes,dentist,wash dog 
Friday: wash dishes,clean house 
Thursday: wash dishes 
Monday: wash dishes,take out trash 
Saturday: wash dishes,wash car,pay rent 
Tuesday: wash dishes,pay bills 
*/