De reduce methode
De methode reduce reduceert een array tot
één waarde. Het is bijvoorbeeld
met deze methode eenvoudig om de som van de
elementen van een array te vinden (dat wil zeggen, de array wordt gereduceerd
tot één waarde - de som van de elementen).
Als eerste parameter ontvangt de methode reduce
een functie die sequentieel wordt uitgevoerd
voor elk element van de array, beginnend bij het eerste.
Er kunnen 4 parameters aan deze functie worden doorgegeven.
Als deze parameters aanwezig zijn (ze zijn niet verplicht),
dan komt in de eerste automatisch het tussentijdse
resultaat, in de tweede komt het element
van de array, in de derde - zijn nummer in de array (index),
en in de vierde - de array zelf.
Het tussentijdse resultaat is een variabele
waarin de waarde wordt opgehoopt
die de methode reduce zal teruggeven wanneer
het alle elementen van de array heeft doorlopen. Het is bijvoorbeeld
mogelijk om daar sequentieel de som van de
elementen van de array op te hopen: eerst het eerste element
plaatsen, bij de volgende iteratie van de lus
de som van het eerste en tweede element, bij de volgende
iteratie - de som van het eerste, tweede en derde.
En zo verder, tot de array is afgelopen.
De functie die reduce accepteert,
moet de nieuwe waarde van het tussentijdse
resultaat teruggeven.
Als tweede parameter van de methode reduce wordt
de beginwaarde van het tussentijdse resultaat opgegeven.
Als deze niet wordt opgegeven, dan wordt deze gelijk aan het eerste
element van de array, en begint de verwerking van de elementen
bij het tweede element.
Syntaxis
array.reduce(function(tussentijdsResultaat, element, index, array) {
return nieuwTussentijdsResultaat;
}, beginwaarde);
Voorbeeld
Laten we de som van de elementen van een array vinden:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(som, elem) {
return som + elem;
}, 0);
console.log(res);
Resultaat van de code-uitvoering:
21
Voorbeeld
Laten we de som van alle positieve getallen in de array vinden:
let arr = [1, -2, -3, 4, 5, -6];
let res = arr.reduce(function(som, elem) {
if (elem >= 0) {
return som + elem;
} else {
return som;
}
}, 0);
console.log(res);
Resultaat van de code-uitvoering:
10