Iteration über Arrays in JavaScript: 5 fatale Fehler und wie man sie vermeidet

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Wie man Arrays in JavaScript durchläuft: Top-Fehler und wie man sie vermeidet

\n\n

Haben Sie jemals Code geschrieben, der einfach nur eine To-Do-Liste oder Warenkorb-Artikel durchgehen sollte, stattdessen aber undefined, eine Endlosschleife oder, noch schlimmer, still und leise Daten beschädigt hat? Ein bekanntes Problem. Die Frage "How to loop through the items of an array in JavaScript?" ist eine der beliebtesten auf Stack Overflow. Scheint einfach, oder? Aber der Teufel steckt, wie immer, im Detail.

\n\n

Heute schauen wir uns nicht nur an, wie man Arrays in JavaScript durchläuft. Wir beleuchten die häufigsten Fallstricke, auf die Anfänger (und nicht nur sie) hereinfallen. Sie erfahren, warum for...in Sie hereinlegen kann, wie sich forEach von map unterscheidet und wie Sie eine Endlosschleife in for vermeiden.

\n\n

Bereit? Dann lasst uns Bugs beheben und schönen Code schreiben.

\n\n

Fehler Nr. 1: Verwendung von for...in für Arrays

\n\n

Dies ist wohl der heimtückischste Anfängerfehler. Ein Entwickler sieht das Wort for und das Wort in und denkt: "Oh, das ist ja zum Durchlaufen von allem Möglichen!". Technisch gesehen stimmt das. Aber für Arrays ist das eine Katastrophe.

\n\n

Die for...in-Schleife ist für das Durchlaufen von Objekteigenschaften gedacht, nicht für Array-Elemente. Ja, ein Array ist in JS auch ein Objekt, aber seine Indizes sind lediglich String-Schlüssel ("0", "1", "2").

\n\n

Hier liegt der Haken:

\n
    \n
  • Die Reihenfolge ist nicht garantiert. Obwohl Browser normalerweise die Reihenfolge einhalten, sollte man sich nicht darauf verlassen.
  • \n
  • Es durchläuft die gesamte Prototypen-Vererbung. Wenn Sie oder eine Bibliothek eine Methode zu Array.prototype hinzugefügt haben (z.B. Array.prototype.myCustomMethod = function() {}), wird for...in diese ebenfalls aufgreifen.
  • \n
\n\n

Codebeispiel (wie man es NICHT macht):

\n
const arr = [10, 20, 30];\nArray.prototype.customMethod = () => {};\n\nfor (let index in arr) {\n  console.log(arr[index]); // Gibt aus: 10, 20, 30, ƒ () => {}\n}\n
\n\n

Sehen Sie? Am Ende taucht unsere benutzerdefinierte Funktion auf. Der Code ist kaputt.

\n\n

Wie es richtig geht:

\n

Verwenden Sie for...of (für Werte) oder die klassische for-Schleife (für Indizes). for...of durchläuft nur die Werte und ignoriert den Prototypen.

\n
// Richtig und sicher\nfor (let value of arr) {\n  console.log(value); // 10, 20, 30\n}\n
\n\n

Fehler Nr. 2: Den Callback in forEach vergessen

\n\n

arr.forEach(callback) ist eine elegante Methode, um Arrays in JavaScript zu durchlaufen. Aber viele verwechseln es mit map oder filter. Der Hauptfehler ist zu glauben, dass forEach etwas zurückgibt. Es gibt undefined zurück.

\n\n

Ein zweiter häufiger Fehler ist, das zweite und dritte Argument des Callbacks (Index und das Array selbst) zu vergessen. Manchmal ist das kritisch.

\n\n

Beispiel für einen Fehler:

\n
const numbers = [1, 2, 3];\nconst doubled = numbers.forEach(num => num * 2);\nconsole.log(doubled); // undefined! Fehler.\n
\n\n

Wie es richtig geht:

\n

Wenn Sie ein neues Array basierend auf einem alten erstellen müssen, verwenden Sie map(). Wenn Sie nur eine Aktion ausführen müssen (z.B. in der Konsole ausgeben oder Daten senden), verwenden Sie forEach().

\n
// Zum Erstellen eines neuen Arrays\nconst doubled = numbers.map(num => num * 2); // [2, 4, 6]\n\n// Für Seiteneffekte\nnumbers.forEach((num, index) => {\n  console.log(`Element ${index}: ${num}`);\n});\n
\n\n

Fehler Nr. 3: Endlosschleife in for

\n\n

Ein Klassiker. Sie schreiben for (let i = 0; i < arr.length; i++), vergessen aber die Inkrementierung i++ oder, noch schlimmer, verändern das Array innerhalb der Schleife.

\n\n

Angenommen, Sie filtern das Array im laufenden Betrieb, indem Sie Elemente mit splice() entfernen. Wenn Sie die

Blogs

Buchempfehlungen