Lektionen des Moduls (2/4)
reduce
reduce ist die mächtigste der funktionalen Array-Methoden: Sie durchläuft das Array und führt dabei einen Akkumulator mit sich, der bei jedem Schritt aktualisiert wird. Am Ende des Durchlaufs wird der Akkumulator zurückgegeben.
Signatur
arr.reduce((acc, elem) => nuovoAcc, valoreIniziale);accstartet beivaloreIniziale.- Für jedes Element wird ein neuer
acc-Wert berechnet. - Das Endergebnis ist der letzte
acc-Wert.
Einfache Beispiele: Summe und Produkt
const numeri = [3, 1, 4, 1, 5];
const somma = numeri.reduce((a, n) => a + n, 0);
// 14
const prodotto = numeri.reduce((a, n) => a * n, 1);
// 60Ohne einen Startwert beginnt reduce mit dem ersten Element (riskant bei potenziell leeren Arrays
→ Fehler). Übergib immer einen Startwert, wenn möglich.
Ein Objekt aufbauen: Zählen von Häufigkeiten
const parole = ['mela', 'pera', 'mela', 'kiwi', 'mela'];
const conteggio = parole.reduce((acc, p) => {
acc[p] = (acc[p] ?? 0) + 1;
return acc;
}, {});
// { mela: 3, pera: 1, kiwi: 1 }Maximum / Minimum finden
const nums = [3, 7, 1, 9, 4];
const max = nums.reduce((a, n) => (n > a ? n : a), -Infinity);
// 9(In der Praxis bevorzugt man für max/min Math.max(...nums); dies ist ein didaktisches Beispiel.)
Probier es aus
Definiere `total(items)`: Du erhältst ein Array von Objekten der Form { price, quantity } und gibst die Gesamtsumme (Summe aus price*quantity) zurück. Verwende reduce.
Hinweis anzeigen
reduce((a, it) => a + it.price * it.quantity, 0)
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Definiere `count(words)`: Berechne für ein gegebenes Array von Strings ein Objekt, das jeden String auf die Anzahl seiner Vorkommen abbildet. Verwende reduce mit einem Objekt als Akkumulator.
Hinweis anzeigen
acc[p] = (acc[p] ?? 0) + 1; return acc;
Lösung nach 3 Versuchen verfügbar