Arrays mit Schleifen durchlaufen
Lerne alle Methoden um Arrays zu durchlaufen: for, for...of, for...in, forEach. Wann welche Methode? Mit praktischen Beispielen.
Inhaltsverzeichnis
Arrays mit Schleifen durchlaufen
Arrays und Schleifen gehören zusammen wie Kaffee und Keks. In diesem Tutorial lernst du alle Methoden, um Arrays zu durchlaufen - und wann du welche verwendest.
Die klassische for-Schleife
Die traditionelle Methode mit Index:
const fruechte = ["Apfel", "Banane", "Orange", "Mango"];
for (let i = 0; i < fruechte.length; i++) {
console.log(fruechte[i]);
}
// Ausgabe:
// Apfel
// Banane
// Orange
// Mango
Mit Index arbeiten
const namen = ["Anna", "Ben", "Clara"];
for (let i = 0; i < namen.length; i++) {
console.log(`${i + 1}. ${namen[i]}`);
}
// Ausgabe:
// 1. Anna
// 2. Ben
// 3. Clara
Rückwärts durchlaufen
const zahlen = [1, 2, 3, 4, 5];
for (let i = zahlen.length - 1; i >= 0; i--) {
console.log(zahlen[i]);
}
// Ausgabe: 5, 4, 3, 2, 1
Jeden zweiten Eintrag
const buchstaben = ["a", "b", "c", "d", "e", "f"];
for (let i = 0; i < buchstaben.length; i += 2) {
console.log(buchstaben[i]);
}
// Ausgabe: a, c, e
for…of - Die moderne Methode
for...of ist die empfohlene Methode wenn du nur die Werte brauchst:
const fruechte = ["Apfel", "Banane", "Orange", "Mango"];
for (const frucht of fruechte) {
console.log(frucht);
}
// Ausgabe:
// Apfel
// Banane
// Orange
// Mango
Vorteile von for…of
// Kürzer und lesbarer
for (const item of array) {
// Kein i++, kein array[i], kein .length
}
// Funktioniert mit allem Iterierbaren
const text = "Hallo";
for (const buchstabe of text) {
console.log(buchstabe); // H, a, l, l, o
}
Mit Index: entries()
Wenn du den Index brauchst:
const tiere = ["Hund", "Katze", "Vogel"];
for (const [index, tier] of tiere.entries()) {
console.log(`${index}: ${tier}`);
}
// Ausgabe:
// 0: Hund
// 1: Katze
// 2: Vogel
for…in - Für Objekt-Eigenschaften
Achtung: for...in ist für Objekte gedacht, nicht für Arrays!
// ❌ Nicht empfohlen für Arrays
const arr = ["a", "b", "c"];
for (const i in arr) {
console.log(i); // "0", "1", "2" (Strings!)
console.log(arr[i]); // "a", "b", "c"
}
// ✅ Richtig: for...in für Objekte
const person = { name: "Max", alter: 25, stadt: "Berlin" };
for (const key in person) {
console.log(`${key}: ${person[key]}`);
}
// Ausgabe:
// name: Max
// alter: 25
// stadt: Berlin
forEach - Die Array-Methode
forEach ist eine Array-Methode mit Callback:
const zahlen = [1, 2, 3, 4, 5];
zahlen.forEach(function(zahl) {
console.log(zahl * 2);
});
// Ausgabe: 2, 4, 6, 8, 10
Mit Arrow Function
const zahlen = [1, 2, 3, 4, 5];
zahlen.forEach(zahl => console.log(zahl * 2));
// Ausgabe: 2, 4, 6, 8, 10
Mit Index und Array
const fruechte = ["Apfel", "Banane", "Orange"];
fruechte.forEach((frucht, index, array) => {
console.log(`${index + 1}/${array.length}: ${frucht}`);
});
// Ausgabe:
// 1/3: Apfel
// 2/3: Banane
// 3/3: Orange
forEach vs. for…of
// forEach - kann NICHT mit break/continue
// forEach - kann NICHT await verwenden
const zahlen = [1, 2, 3, 4, 5];
// ❌ break funktioniert NICHT in forEach
zahlen.forEach(zahl => {
if (zahl === 3) break; // SyntaxError!
});
// ✅ break funktioniert in for...of
for (const zahl of zahlen) {
if (zahl === 3) break; // OK!
console.log(zahl);
}
Vergleich aller Methoden
| Methode | Index? | break/continue? | Empfohlen für |
|---|---|---|---|
for | ✅ | ✅ | Index-Kontrolle, komplexe Logik |
for...of | Mit entries() | ✅ | Standard-Iteration |
for...in | ✅ (als String) | ✅ | Objekte, NICHT Arrays |
forEach | ✅ | ❌ | Einfache Operationen |
Praktische Beispiele
Summe berechnen
const preise = [19.99, 5.50, 12.00, 8.75];
// Mit for
let summe1 = 0;
for (let i = 0; i < preise.length; i++) {
summe1 += preise[i];
}
// Mit for...of
let summe2 = 0;
for (const preis of preise) {
summe2 += preis;
}
// Mit forEach
let summe3 = 0;
preise.forEach(preis => {
summe3 += preis;
});
console.log(summe1, summe2, summe3); // Alle: 46.24
Maximum finden
const zahlen = [34, 12, 89, 45, 23, 67];
let max = zahlen[0];
for (const zahl of zahlen) {
if (zahl > max) {
max = zahl;
}
}
console.log("Maximum:", max); // 89
Element suchen
const namen = ["Anna", "Ben", "Clara", "David", "Eva"];
const gesucht = "Clara";
// Mit for...of und break
let gefunden = false;
for (const name of namen) {
if (name === gesucht) {
gefunden = true;
break;
}
}
console.log(gefunden ? "Gefunden!" : "Nicht gefunden");
Array filtern (manuell)
const zahlen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const geradeZahlen = [];
for (const zahl of zahlen) {
if (zahl % 2 === 0) {
geradeZahlen.push(zahl);
}
}
console.log(geradeZahlen); // [2, 4, 6, 8, 10]
Array transformieren (manuell)
const namen = ["anna", "ben", "clara"];
const grossgeschrieben = [];
for (const name of namen) {
grossgeschrieben.push(name.toUpperCase());
}
console.log(grossgeschrieben); // ["ANNA", "BEN", "CLARA"]
Verschachtelte Arrays
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
// Alle Elemente ausgeben
for (const zeile of matrix) {
for (const zelle of zeile) {
console.log(zelle);
}
}
// Mit Index
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
console.log(`matrix[${i}][${j}] = ${matrix[i][j]}`);
}
}
Summe einer Matrix
const matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
let summe = 0;
for (const zeile of matrix) {
for (const zahl of zeile) {
summe += zahl;
}
}
console.log("Summe:", summe); // 45
Array von Objekten
const produkte = [
{ name: "Laptop", preis: 999 },
{ name: "Maus", preis: 29 },
{ name: "Tastatur", preis: 79 },
{ name: "Monitor", preis: 349 }
];
// Alle Produkte ausgeben
for (const produkt of produkte) {
console.log(`${produkt.name}: ${produkt.preis}€`);
}
// Gesamtpreis berechnen
let gesamt = 0;
for (const produkt of produkte) {
gesamt += produkt.preis;
}
console.log(`Gesamt: ${gesamt}€`); // 1456€
// Produkte über 100€
console.log("Teure Produkte:");
for (const produkt of produkte) {
if (produkt.preis > 100) {
console.log(`- ${produkt.name}`);
}
}
Häufige Muster
Erstes Element finden
const zahlen = [4, 7, 12, 3, 9, 15];
let erstesGrosseAlsZehn = null;
for (const zahl of zahlen) {
if (zahl > 10) {
erstesGrosseAlsZehn = zahl;
break;
}
}
console.log(erstesGrosseAlsZehn); // 12
Prüfen ob alle/einige
const noten = [2, 1, 3, 2, 1];
// Alle bestanden? (Note <= 4)
let alleBestanden = true;
for (const note of noten) {
if (note > 4) {
alleBestanden = false;
break;
}
}
// Mindestens einer mit 1?
let hatEinser = false;
for (const note of noten) {
if (note === 1) {
hatEinser = true;
break;
}
}
console.log("Alle bestanden:", alleBestanden); // true
console.log("Hat Einser:", hatEinser); // true
Zählen
const text = "Hallo Welt, wie geht es dir heute?";
const buchstaben = text.split("");
let vokale = 0;
const vokalListe = "aeiouäöüAEIOUÄÖÜ";
for (const buchstabe of buchstaben) {
if (vokalListe.includes(buchstabe)) {
vokale++;
}
}
console.log(`Anzahl Vokale: ${vokale}`); // 12
Performance-Tipp
Bei sehr großen Arrays kann die klassische for-Schleife minimal schneller sein:
const grossesArray = new Array(1000000).fill(1);
// Schnellste Variante für Performance-kritische Fälle
const len = grossesArray.length; // length cachen
for (let i = 0; i < len; i++) {
// ...
}
Aber: In 99% der Fälle ist der Unterschied vernachlässigbar. Bevorzuge Lesbarkeit!
Zusammenfassung
const arr = [1, 2, 3];
// Standard - for...of (empfohlen)
for (const item of arr) { }
// Mit Index - entries()
for (const [i, item] of arr.entries()) { }
// Klassisch - for
for (let i = 0; i < arr.length; i++) { }
// Callback - forEach
arr.forEach(item => { });
// Für Objekte - for...in
for (const key in obj) { }
Übung: Gegeben ist ein Array von Schülern mit Namen und Noten. Berechne den Notendurchschnitt und gib alle Schüler aus, die besser als der Durchschnitt sind!
const schueler = [
{ name: "Anna", note: 2 },
{ name: "Ben", note: 3 },
{ name: "Clara", note: 1 },
{ name: "David", note: 4 },
{ name: "Eva", note: 2 }
];