Iteration über Arrays
Es gibt viele verschiedene Methoden, um in JavaScript über Arrays zu loopen. Dabei ist jede Methode für etwas anderes zuständig.
forEach()
forEach()Die forEach()-Methode ruft für jedes Element eine Callback-Funktion auf. In der Callback-Funktion haben wir Zugriff auf drei Parameter:
cur: Das aktuelle Elementindex: Den Index des aktuellen Elementsarr: Der gesamte Array
movements.forEach((movement, index, array) => {
if (movement > 0) {
console.log(`Movement ${index + 1}: You deposited ${movement}`);
} else {
console.log(`Movement ${index + 1}: You withdrew ${Math.abs(movement)}`);
}
});Bei der forEach()-Methode können wir den Loop nicht abbrechen oder überspringen.
map()
map()Die map()-Methode funktioniert ähnlich wie die forEach()-Methode. Sie geht durch jedes Element im Array durch und führt eine bestimmte Callback-Methode aus.
Wie auch bei der forEach()-Methode haben wir Zugriff auf:
cur: Das aktuelle Elementindex: Den Index des aktuellen Elementsarr: Der gesamte Array
const movementsInEuro = [200, 450, -400, 3000, -650, -130, 70, 1300];
const euroToUsdConversionRate = 1.1;
const movementsInUsd = movementsInEuro.map(
(movement) => movement * euroToUsdConversionRate
);filter()
filter()Die filter()-Methode ist dafür da, um bestimmte Elemente aus einem Array herauszufiltern.
const movements = [200, 450, -400, 3000, -650, -130, 70, 1300];
const deposits = movements.filter((movement) => movement > 0);
const withdrawals = movements.filter((movement) => movement < 0);reduce()
reduce()Die reduce()-Methode "reduziert" alle Elemente eines Arrays auf einen Wert hinab.
const movements = [200, 450, -400, 3000, -650, -130, 70, 1300];
const balance = movements.reduce((acc, cur) => acc + cur, 0);Die Methode erwartet zwei Argumente: Die Callback-Funktion und den Initialwert des accumulators, hier acc. Die Callbackmethode hat vier Argumente, die wir nutzen können:
acc: Der Accumulator, welcher den gesamten Wert speichertcur: Das aktuelle Elementindex: Den Index des aktuellen Elementsarr: Der gesamte Array
const max = movements.reduce(
(acc, cur) => (acc > cur ? acc : cur),
movements[0]
);Last updated