Homepage-Webhilfe Event-Banner

Arrays

Ein Array stellt eine Aneinanderreihung von Variablen dar (Liste). Arrays können in JavaScript zur Laufzeit verändert werden, d. h. es können Elemente (dies sind die „einzelnen Variablen“ des Arrays) hinzugefügt, entfernt und sortiert werden. Ebenfalls ist es möglich, das Array zu durchsuchen, zu sortieren und zu filtern.

Ein Array wird in einer einfachen Variablen hinterlegt. Um eine Array-Variable zu initialisieren notieren wir das Schlüsselwort new gefolgt von dem Datentyp-Name Array. Dahinter folgt ein rundes Klammernpaar. Bei dieser Notation handelt es sich um eine Objekt-Instanziierung (so nennt sich der Vorgang der Objekt-Erzeugung). Diese werden wir später beim Thema Objektorientierung nochmals aufgreifen. Als Parameter für den sogenannten Konstruktor (dies ist die Funktion für die Instanziierung des Objektes) können wir die Werte für das Array übergeben. Werden keine Werte übergeben, so wird ein leeres Array erzeugt. Ein Array kann Werte vom gleichen, aber auch von unterschiedlichen Datentypen enthalten. Zweites ist jedoch auf Grund von Such- und Sortierfunktionen nicht unbedingt zu empfehlen. Die Initialisierung eines Arrays könnte wie folgt aussehen:

var sprachen = new Array("HTML", "CSS", "JavaScript", "ActionScript", "PHP", "Perl", "ASP.NET");

Zur Deklaration und Initialisierung eines Arrays gibt es auch noch eine zweite Schreibweise, welche als Kurzschreibweise anzusehen ist. Hierfür notieren wir bei der Wertzuweisung die eckigen Klammern [ und ]. Innerhalb der eckigen Klammern notieren wir nun die Werte, die wir dem Array zuweisen wollen. Dabei werden mehrere Werte durch Komma getrennt. Ein äquivalentes Beispiel zur Array-Initialisierung wie oben in der Kurzschreibweise sieht wie folgt aus:

var sprachen = ["HTML", "CSS", "JavaScript", "ActionScript", "PHP", "Perl", "ASP.NET"];

Um auf die Elemente eines Arrays zuzugreifen, müssen wir den Namen des Arrays gefolgt von einem eckigen Klammernpaar notieren. Innerhalb der eckigen Klammern wird der sogenannte Index notiert. Die Elemente eines Arrays sind durchgängig nummeriert. Das erste Element besitzt den Index 0 (nicht 1!), das zweite Elemente den Index 1, das dritte Elemente den Index 2 usw.. Das folgende Beispiel gibt „CSS“ aus:

var sprachen = new Array("HTML", "CSS", "JavaScript", "ActionScript", "PHP", "Perl", "ASP.NET");

document.write(sprachen[1]);
Vorschau

Wie bereits schon im Thema Schleifen angesprochen, gibt es in JavaScript die for-in-Schleife (umgangssprachlich auch gerne als „Array-Schleife“ bezeichnet). Diese wird dazu verwendet, die Elemente eines Arrays „durchzugehen“. Um eine for-in-Schleife zu notieren, geben wir das Schlüsselwort for gefolgt von einem runden Klammernpaar an (so wie bei der for-Schleife auch). Innerhalb der Klammern wird das Schlüsselwort var, gefolgt von einem Variablennamen, angegeben. Hinter dem Variablennamen muss nun noch das Schlüsselwort in sowie der Name des Arrays angegeben werden. Die in der Schleife definierte Variable enthält den Index, welcher genutzt werden kann, um auf die Elemente des Arrays zuzugreifen.

var sprachen = new Array("HTML", "CSS", "JavaScript", "ActionScript", "PHP", "Perl", "ASP.NET");

for (var sprache in sprachen)
{
	document.write(sprachen[sprache]);
	document.write("<br />");
}
Vorschau

Übrigens: Die for-in-Schleife kann auch dazu verwendet werden, die Eigenschaften eines Objekts durchzugehen. Dabei enthält die Variable, welche in der Schleife deklariert wurde, nicht den Index, sondern den Namen der Eigenschaft.


Um ein Array zu verändern, gibt es die vier Funktionen: push(), pop(), shift() und unshift(). Um diese Funktionen aufrufen zu können, müssen wir den Namen der Variable gefolgt von einem Punkt und dem Funktionsnamen (inkl. Klammern mit Parameter) notieren. Über diese Weise können auch Eigenschaften gesetzt oder abgerufen werden. Der Funktion push() können ein oder mehrere Werte / Parameter übergeben werden, welche dem Array am Ende hinzugefügt werden sollen. Als Rückgabewert gibt die Funktion die neue Länge des Arrays zurück. Die Funktion unshift() ist im Vergleich zur push()-Funktion ähnlich, jedoch mit dem Unterschied, dass die Elemente nicht ans Ende, sondern an den Anfang hinzugefügt werden. Die Funktion pop() entfernt das letzte Element des Arrays und gibt den entfernten Wert zurück. Die Funktion shift() ist wiederum mit der Funktion pop() zu vergleichen. Auch hier liegt der Unterschied darin, dass sich die Funktion nicht auf das Ende, sondern auf den Anfang bezieht, d. h. die Funktion shift() entfernt das erste Element des Arrays.

var sprachen = new Array("XML", "HTML", "CSS", "JavaScript", "ActionScript");

document.write("Folgendes Element wurde entfernt: ");
document.write(sprachen.shift());

document.write("<br />");

document.write("Das Array hat nun folgende Länge: ");
document.write(sprachen.push("Java SE"));
Vorschau

Übrigens: Mit der Eigenschaft length ist es möglich, die Länge des Arrays abzurufen. Wie bereits erwähnt, gilt auch hier der Syntax mit dem Punkt (z. B. sprachen.length).


Um einem Array ein ganzes Array oder mehrere Arrays hinzuzufügen, gibt es die Funktion concat(). Als Parameter werden ein oder mehrere Arrays übergeben, welche mit dem ursprünglichen Array zusammengeführt werden sollen. Die Funktion concat() gibt ein neues Array zurück, d. h. das ursprüngliche Array sowie die übergebenen Arrays werden nicht verwendet.

var sprachenClient = new Array("HTML", "CSS", "JavaScript", "ActionScript");
var sprachenServer = new Array("PHP", "Perl", "ASP.NET");

var sprachen = sprachenClient.concat(sprachenServer);

document.write("1. Element: ");
document.write(sprachen[0]);
document.write("<br />");

document.write("letztes Element: ");
document.write(sprachen[sprachen.length - 1]);
document.write("<br />");

document.write("Länge: ");
document.write(sprachen.length);
Vorschau

JavaScript bietet eine einfache Funktion, um die Werte eines Arrays in eine Zeichenkette umzuwandeln. Bei dieser Funktion handelt es sich um join(). Dieser Funktion kann als Parameter eine Zeichenkette übergeben werden, welche als Trennzeichen zwischen den einzelnen Elementen verwendet werden soll. Dieser Parameter ist optional. Wird dieser nicht angegeben, so wird ein Komma (ohne anschließendes Leerzeichen) zur Trennung verwendet.

var sprachen = new Array("HTML", "CSS", "JavaScript", "ActionScript", "PHP", "Perl", "ASP.NET");

document.write(sprachen.join(", "));
Vorschau

Die Funktion indexOf() durchsucht ein Array nach einem bestimmten Wert, welcher als Parameter übergeben werden muss. Wird der gesuchte Wert gefunden, so gibt die Funktion den Index des Elements zurück. Andernfalls gibt die Funktion -1 zurück. Optional kann der Funktion ein Startindex als zweiter Parameter übergeben werden. Dadurch beginnt die Suche nicht beim ersten Element, sondern bei dem Element mit dem angegebenen Index. Eine Suche vom Ende zum Anfang bzw. die Suche nach dem letzten Element ist über die Funktion lastIndexOf() möglich. Die Möglichkeit mit dem zweiten optionalen Parameter gilt hier ebenfalls.

var sprachen = new Array("HTML", "CSS", "JavaScript", "ActionScript", "PHP", "Perl", "ASP.NET");

document.write("Position von JavaScript: ");
document.write(sprachen.indexOf("JavaScript"));
Vorschau

Wichtig: Die Suche nach Objekten in einem Array ist nicht immer ganz problemlos. Auf diese Problematik gehen wir im Thema Objektorientierung genauer ein.


Um die Werte eines Arrays zu sortieren, können wir die Funktion sort() verwenden. Die Sortierung erfolgt dabei aufsteigend (bei Zahlen nach Größe, bei Zeichenketten alphabetisch). Dazu folgendes Beispiel:

var sprachen = new Array("HTML", "CSS", "JavaScript", "ActionScript", "PHP", "Perl", "ASP.NET");

sprachen.sort();

for (var sprache in sprachen)
{
	document.write(sprachen[sprache]);
	document.write("<br />");
}
Vorschau

Um aus einem Array nur bestimmte Elemente herauszufiltern, können wir die Funktion filter() nutzen. Als Parameter wird der filter()-Funktion eine Funktion als Referenz (dazu später mehr) übergeben, d. h. wir notieren als Parameter den Namen der Funktion, wie beim Funktionsaufruf auch, jedoch ohne die runden Klammern. Der angegebenen Funktion wird dabei ein einzelnes Element des Arrays als Parameter übergeben und muss true (Element soll beibehalten werden) oder false (Element soll „entfernt“ werden) zurückgeben. Auch hier gilt zu beachten, dass die Funktion filter() ebenfalls ein neues Array zurückgibt und das Ursprungs-Array nicht verändert.

Gerade bei solchen Funktionen, wie der Filterungsfunktion, wird gerne ein Lambda-Ausdruck (auch Lambda-Funktion oder anonyme Funktion genannt) verwendet. Dieser ersetzt dabei die angegebene Filterungsfunktion. Bei dem Lambda-Ausdruck notieren wir eine Variablennamen (ohne das var-Schlüsselwort) gefolgt von einem Pfeiloperator =>. Anschließend folgt (bezogen auf das Beispiel der Filterung) ein Ausdruck bzw. eine Bedingung, um zu prüfen, ob der Wert in das neue Array mit einbezogen werden soll. Diese Bedingung muss, wie bei der if-Bedingung auch, einen Wert vom Typ Boolean zurückliefern. Alle dort vorgestellten Operatoren, sowie die Verknüpfungsoperatoren && und ||, können hier verwendet werden.

var zahlen = new Array(12, 32, 8, 50, 83, 29, 30, 100, 46, 23, 7, 132, 57, 92, 20);
var zahlenNeu = zahlen.filter(x => x >= 10 && x < 100);

document.write(zahlen.join(", "));

document.write("<br />");

document.write(zahlenNeu.join(", "));
Vorschau
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK