JavaScript reduce(): zo werkt de array-methode in de praktijk

JavaScript reduce(): zo werkt de array-methode in de praktijk
In dit artikel leg ik uit hoe je de methode Javascript reduce gebruikt: aan de hand van voorbeelden zie je hoe ze werkt en wanneer je ze inzet.
De JavaScript-methode reduce past een functie toe op elk element van een array om die array tot één enkele waarde terug te brengen.
Kijk maar naar dit voorbeeld:

javascript
let result = array.reduce((acc, v, i, a) => {
// geeft de nieuwe waarde terug aan de variabele 
}, initVal);

// result - de enige waarde die wordt teruggegeven.
// array - de array waarop de reduce-functie draait.
// acc - de accumulator verzamelt alle teruggegeven waarden.
// v - de waarde die op dit moment wordt verwerkt
// i - de index van de waarde die op dit moment wordt verwerkt.
// a - de oorspronkelijke array
// initVal - een optionele beginwaarde.
// Wordt er geen beginwaarde meegegeven,
// dan wordt element 0 als beginwaarde gebruikt.

Je kunt de JavaScript-methode reduce zien als een for-lus die speciaal bedoeld is om met de waarden van een array iets nieuws op te bouwen. Bekijk dit voorbeeld eens.

php
var array = [11, 12, 13, 14];
var sum = 0;
for(var i = 0; i  < array.length; i++) {
      sum += array[i];
 }

// sum = 50

De code hierboven telt alle waarden van onze array bij elkaar op. Dat werkt, maar er is een eenvoudigere manier om hetzelfde resultaat te krijgen.

We herschrijven die functie met de JavaScript-methode reduce().

javascript
let array = [11, 12, 13, 14];
let sum = array.reduce((bcc, v) => bcc + v);
// sum = 50

Hetzelfde resultaat, zonder ook maar één lus.

We hebben de variabele bcc gebruikt om onze optelling bij te houden. Zolang reduce() door de array loopt, blijft de waarde van bcc groeien tot de functie klaar is.

Weet je nog dat ik zei dat we een optionele beginwaarde kunnen meegeven? Dat is zo geregeld. We nemen hetzelfde voorbeeld als hiervoor: we tellen onze array op, maar deze keer beginnen we bij 250.

Hoe ziet dat eruit met een beginwaarde van 250? Het voorbeeld hieronder laat het zien.

javascript
let array = [11, 12, 13, 14];
let sum = array.reduce((bcc, v) => bcc + v, 250);

Zoals je ziet is de code hierboven bijna gelijk aan het vorige voorbeeld. Het enige verschil is een tweede argument na onze callback: ik geef het getal 250 mee als startpunt. Draait de functie nu, dan komt de som uit op 300.

Ik hoop dat je hier iets aan hebt. Er staan nog meer artikelen over JavaScript op de site, waaronder over arrays, bijvoorbeeld over hoe je twee JavaScript-arrays samenvoegt.

JavaScript

Damien Flandrin Webdeveloper sinds 2010, maker van Gekkode en Email Impact. Elk artikel wordt vóór publicatie getest op een echt project. Contact
Nieuwsbrief

Nieuwe tests, tutorials en projecten, per e-mail.

Reproduceerbare tests, geversioneerde code, gedateerde resultaten. Nooit spam.