Arrays

Ein Array ist ein Datentyp, in dem beliebig viele Werte verschiedenen Datentyps gespeichert werden können. Um auf einen bestimmten Wert in einem Array zuzugreifen, nutzt man die Tatsache, dass alle Werte eines Arrays durchnummeriert sind.

Erzeugen eines Arrays
code format="actionscript" //Arrays kann man auf verschiedene Methoden erzeugen var namen_array:Array = ["Otto","Maria","Franz","Lisa"]; //Kurzform var namen_array:Array = new Array("Otto","Maria","Franz","Lisa"); //Sauberes OOP var zahlen_array:Array = [7, 6, 89]; //geht auch mit Zahlen ... var mixed_array:Array = [true, 7, "xxx"]; //... und gemischten Datentypen oder Objekten code Natürlich kann man auch erst ein leeres Array erzeugen, und erst später die Elemente einfügen. Optional kann man auch für ein leeres Arrays schon angeben, wie viele Elemente es fassen können soll - solche leeren Elemente haben dann den Wert **undefined**. code format="actionscript" var array:Array = new Array; //leeres Array ohne Elemente var array:Array = new Array(4); //Array mit 4 leeren Elementen code

Auslesen eines Arrays
Die Elemente werden über ihre Position (den Index) innerhalb des Arrays angesprochen. Da Computer normalerweise bei Null anfangen zu zählen, hat das erste Element den Index 0. Der Index wird in eckigen Klammern nach dem Namen des Arrays angegeben. Zur Bestimmung der Anzahl der Elemente eines Arrays gibt es die Eigenschaft length. code format="actionscript" var namen_array:Array = ["Otto","Maria","Franz","Lisa"]; trace(namen_array[0]); //Das erste Element, Ergebnis: Otto trace(namen_array[2]); //Das dritte Element, Ergebnis: Franz trace(namen_array[namen_array.length-1]); //Das letzte Element, Ergebnis: Lisa namen_array[namen_array.length]; //Gibt einen Fehler, da dieser Index (= 4) zu gross ist var name:String = namen_array[1]; //Speichert das zweite Element (Maria) in name code Üblich ist es, mit einer Schleife alle Elemente anzusprechen: code format="actionscript" for( var i = 0; i < array.length; i++) { trace(array[i]); //gibt alle Elemente des Arrays nacheinander aus } code oder noch knapper: code format="actionscript" for(i in array) { trace(array[i]); //gibt alle Elemente des Arrays nacheinander aus } code

Hinzufügen und Löschen von Array-Elementen
Array-Elementen Werte zuweisen geht genauso: code format="actionscript" var namen_array:Array = new Array(4); namen_array[0] = "Otto"; namen_array[1] = "Maria"; namen_array[2] = "Franz"; namen_array[3] = "Lisa"; //Gibt es an der vorgesehenen Position noch kein Element, dann legt der Interpreter ein neues Element an (Array wird grösser). //Entsteht zwischen dem letzten Element und dem neuen Element eine Lücke, so wird diese mit leeren Elementen gefüllt. namen_array[7] = "Martin"; //Ist bereits ein Element mit einem Wert vorhanden, dann wird dieser Wert überschrieben. namen_array[0] = "Tina"; //anstatt Otto ist jetzt Tina im ersten Element gespeichert //Um ein Element wieder zu entfernen ist es am einfachsten, es mit undefined zu überschreiben namen_array[2] = undefined; code

Array-Methoden
//push// Mit dieser Methode kann man ein oder mehrere Element(e) an das Ende eines Arrays anhängen. code format="actionscript" var namen_array:Array = ["Otto","Maria"]; namen_array.push("Fritz","Lisa"); //also sind jetzt alle vier Elemente im name_array code //unshift// Mit dieser Methode lassen sich ein oder mehrere Elemente vor den Anfang des Arrays einfügen. code format="actionscript" var namen_array:Array = ["Otto","Maria"]; namen_array.unshift("Fritz","Lisa"); //--> vier Elemente, Franz und Lisa zuerst code //pop// Mit dieser Methode kann man das letzte Element eines Arrays entfernen. code format="actionscript" var namen_array:Array = ["Otto","Maria"]; namen_array.pop; //jetzt ist Maria gelöscht und namen_array.length ist 1 code //shift// Mit dieser Methode kann man das erste Element eines Arrays entfernen. code format="actionscript" var namen_array:Array = ["Otto","Maria"]; namen_array.shift; //jetzt ist Otto gelöscht und namen_array.length ist 1 code //splice// Mit dieser Methode ist es möglich, einen Teil des Arrays zu löschen oder durch andere Elemente zu ersetzen. code format="actionscript" var namen_array:Array = ["Otto","Maria","Fritz","Lisa"]; namen_array.splice(1,2); // entfernt ab Index 1 zwei Elemente (Maria und Fritz) namen_array.splice(1) // entfernt ab Index 1 alle Elemente namen_arraynamen.splice(0,1,"Paul"); // ersetzt ab Index 0 ein Element (Otto durch Paul) code //reverse//: Diese Methode kehrt die Reihenfolge der Elemente im Array um. //slice//: Diese Methode kopiert einen Teil des Arrays und liefert diesen als neues Array zurück. Als Parameter erwartet diese Methode den Index des ersten zu kopierenden Elementes und den Index des Elementes das nicht mehr kopiert werden soll - array.slice(1,3) kopiert die Elemente nr. 2 & 3 //join//: Mit dieser Methode lässt sich ein Array in einen String umwandeln. Als Parameter erwartet diese Methode ein Trennzeichen oder eine Trennzeichenfolge, die zwischen die Array-Elemente eingefügt wird. Ohne Parameter wird das Komma als Trennzeichen verwendet. //toString//: Diese Methode wandelt ein Array in einen String um, wobei als Trennzeichen das Komma verwendet wird. //concat//: Diese Methode dient zum Aneinanderhängen von Arrays. //sort//: Diese Methode sortiert ein Array.

//Vertiefung//

Mehrdimensionale Arrays
Ein mehrdimensionales Array entsteht, wenn die Elemente eines Arrays selbst Arrays sind. Der einzige Unterschied ist, dass man jetzt mehrere Indices angeben muss, um auf ein bestimmtes Element zuzugreifen. code format="actionscript" var namen_array:Array = [ ["Maus","Otto"], ["Mai","Maria"], ["Müller","Fritz"], ["Schulz","Lisa"]    ]; //Zugriff:// var vorname1:String = namen_array[0][1]; //Ergebnis: Otto var vorname2:String = namen_array[3][1]; //Ergebnis: Lisa var nachname1:String = namen_array[2][0]; //Ergebnis: Müller code

Assoziative Arrays
In Assoziative Arrays spricht man die Elemente nicht über ihren Index, sondern über Namen (Strings) an. Bei assoziativen Arrays können die Elemente nicht über den Index angesprochen werden und die Eigenschaft length kann nicht benutzt werden. code format="actionscript" person = new Array; person["vorname"] = "Otto"; person["nachname"] = "Maus"; person["alter"] = 40; //oder person = new Array; person.vorname = "Otto"; person.nachname = "Maus"; person.alter = 40; //Zugriff: var vorname:String = person["vorname"]; //Ergebnis: Otto var nachname:String = person["nachname"]; //Ergebnis: Maus var alter:Number = person["alter"]; //Ergebnis: 40 //oder var vorname:String = person.vorname; //Ergebnis: Otto var nachname:String = person.nachname; //Ergebnis: Maus var alter:Number = person.alter; //Ergebnis: 40 code