Direkt zum Hauptinhalt springen
eLearner.app
Modul 5 · Lektion 2 von 418/32 im Kurs~10 min
Lektionen des Moduls (2/4)

for…of und for…in

JavaScript hat zwei „ergonomische“ Schleifen, die man nicht verwechseln sollte:

  • for…of iteriert über die Werte einer iterierbaren Kollektion (Array, String, Set, Map...).
  • for…in iteriert über die enumerierbaren Schlüssel (Keys) eines Objekts.

Sie sind eng verwandt und werden leicht verwechselt — die falsche Schleife zu wählen, ist eine der ersten Fallen der Sprache.

for…of für Arrays und Strings

JS
const colori = ['rosso', 'verde', 'blu'];
for (const c of colori) {
  console.log(c); // 'rosso', 'verde', 'blu'
}

for (const ch of 'abc') {
  console.log(ch); // 'a', 'b', 'c'
}

Es gibt dir nicht den Index. Wenn du den Index ebenfalls benötigst, verwende entries():

JS
for (const [i, c] of colori.entries()) {
  console.log(i, c); // 0 rosso, 1 verde, 2 blu
}

for…in für Objekte

JS
const utente = { nome: 'Anna', eta: 30, citta: 'Roma' };
for (const chiave in utente) {
  console.log(chiave, utente[chiave]); // 'nome' 'Anna', ...
}

Wann du sie NICHT verwechseln darfst

JS
const colori = ['rosso', 'verde', 'blu'];

// SBAGLIATO: stampa gli indici come stringhe!
for (const x in colori) {
  console.log(x); // '0', '1', '2'
}

// GIUSTO
for (const x of colori) {
  console.log(x); // 'rosso', 'verde', 'blu'
}

Probier es aus

Übung#js.m5.l2.e1
Versuche: 0Wird geladen…

Definiere `concat(words)`, das für eine gegebene Liste von Strings einen einzigen String zurückgibt, in dem alle Strings mit einem Leerzeichen getrennt aneinandergehängt sind. Verwende for…of.

Editor wird geladen…
Hinweis anzeigen

Akkumuliere in einem String; füge das Leerzeichen nur hinzu, wenn es nicht das erste Wort ist.

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#js.m5.l2.e2
Versuche: 0Wird geladen…

Definiere `positiveValues(obj)`, das ein Array mit den Werten des Objekts zurückgibt, die Zahlen > 0 sind. Verwende for…in. Die Reihenfolge muss der Iterationsreihenfolge der Schlüssel entsprechen.

Editor wird geladen…
Hinweis anzeigen

Schleife mit for...in über die Schlüssel, filtere mit typeof und > 0, und pushe die Werte in die Ergebnisse.

Lösung nach 3 Versuchen verfügbar