JavaScript/Objekte/Array/forEach
Die Methode forEach ruft für jeden Wert des Arrays eine Callback-Funktion auf, der es diesen Wert übergibt. Sie ist als elegantere Schreibweise zu den üblichen Schleifen-Konstrukten von JavaScript im Umgang mit Arrays gedacht.
Syntax
arr.forEach(callback[, thisArg])
Attribute
true
false
true
Folgende Parameter sind möglich:
callback
: Funktion, die ein Element aus dem Array überarbeitet. Sie bekommt ihrerseits drei Parameter:currentValue
: aktuellen Wert aus dem Arrayindex
: Index des Elements aus dem Array, über welches gerade iteriert wirdarray
: Referenz auf das gesamte (ursprüngliche) Array
thisArg
: (optional) Kontext-Parameter, der als this genutzt wird bei der Ausführung der callback-Funktion.
Inhaltsverzeichnis
Anwendungsbeispiel
function log (v, i, ar) { /* Die Variable i enthält den Index des Wertes v im Array ar. Diese drei Parameter werden an die Callback-Funktion bei forEach übergeben. */ if (console && console.dir) { // Ausgabe einer Objektstruktur auf die Konsole console.dir(v); } } var obst = ["Äpfel", "Birnen", "Zwetschgen"]; obst.forEach(log);
Im Beispiel wird eine Funktion log
definiert, welche auf der JavaScript-Konsole des Browsers die Struktur des an sie übergebenen Objektes ausgibt, falls dieser das unterstützt.
Üblicherweise wird diese Methode als Ersatz für eine for-Schleife verwendet:
var obst = ["Äpfel", "Birnen", "Zwetschgen"]; obst.forEach(function (s, i, o) { // Die Variable o enthält eine Referenz auf das Array obst. alert(++i + ". Obst-Umfrage: Mögen Sie " + s + "?"); }); // "1. Obst-Umfrage: Mögen Sie Äpfel?" // "2. Obst-Umfrage: Mögen Sie Birnen?" // "3. Obst-Umfrage: Mögen Sie Zwetschgen?"
Das Verwenden der forEach
-Methode hat den Vorteil, dass die in der Callback-Funktion eingeschlossenen Variablen (hier s
und i
) auch nur dort ihre Gültigkeit haben. Gerade beim Zuweisen von Ereignissen an Elementobjekte wäre es fatal, wenn durch eine im übergeordneten Geltungsbereich gültige Variable unerwünschte Nebeneffekte aufträten. Mehr zu Callback-Funktionen finden Sie unter Umgang mit Callback-Funktionen.
Die Callback-Funktion
Die Callback-Funktion wird mit diesen drei Parametern von der forEach
-Methode aufgerufen:
- aktueller Wert (
currentValue
) - aktueller Index (
index
) - ursprüngliches Array (
originalArray
)
function cb (currentValue, index, originalArray) { // tu was }
Der optionale Kontext-Parameter
Wenn innerhalb der Callback-Funktion das Schlüsselwort this
nicht auf das globale window
-Objekt verweisen soll, dann kann mit diesem zweiten Parameter im forEach
-Aufruf eine Referenz auf ein Objekt übertragen werden, welches stattdessen innerhalb der Callback-Funktion für this
gelten soll.