JavaScript Arrays : Inzicht in de vermindering van functie

Syntaxis

arr.reduce(callbackFunction, [initialValue])

Wat doet verminderen doen?

Verminderen is een functie die door een reeks lussen.

Bewerkingen kunnen worden uitgevoerd op de array via een callback functie.

Aan het einde van de operaties op de array, lagere winsten een enkele waarde

Verminder kan worden gebruikt, bijvoorbeeld, tot een totaal van een winkelwagentje

Voorbeeld

  Laat arr = [1,2,3,4,5];
  arr.reduce( (accumulator, huidige waarde, CurrentIndex, rangschikking) => { 
      //sommige bewerkingen;
      iets terug;
  });

 

De callback functie

De callback functie wordt aangeroepen voor elk element in de array, passeren in 4 argumenten die worden doorgegeven door de vermindering functie.

Deze 4 argumenten vervolgens kan worden gebruikt in onze callback functie.

Duurt vier argumenten

  1. accumulator – Het eerste element van de array op de eerste lus of beginwaarde indien geleverd. Vervolgens de geretourneerde waarde van de vorige lus.
  2. huidige waarde – Het huidige element in de array. Start vanaf het tweede element in de array ie. arr[1], wanneer de initiële waarde argument niet wordt doorgegeven. Indien de beginwaarde argument doorgegeven vervolgens stroomwaarde start vanaf de 1e element in de array arr[0].
  3. CurrentIndex – De index van het onderhavige element.
  4. rangschikking – De hele reeks.

Werkvoorbeeld

Laat arr = [1,2,3,4,5];

arr.reduce(
  (accumulator, huidige waarde, CurrentIndex, rangschikking) => {
    console.log(`accumulator (Op de 1e lus, accumulator is arr[0], dan is de geretourneerde waarde van de vorige lus): ${accumulator}`);
    console.log(`CurrentValue (Doorloopt de array, vanaf arr[1]): ${huidige waarde}`);
    console.log(`CurrentIndex: ${CurrentIndex}`);
    console.log(`matrix: ${rangschikking}`);
    console.log('---');
    return accumulator + huidige waarde;
  }
);

uitgang

accumulator (Op de 1e lus, accumulator is arr[0], dan is de geretourneerde waarde van de vorige lus): 1
huidige waarde (Doorloopt de array, vanaf arr[1]): 2
CurrentIndex: 1
rangschikking: 1,2,3,4,5
---
accumulator (Op de 1e lus, accumulator is arr[0], dan is de geretourneerde waarde van de vorige lus): 3
huidige waarde (Doorloopt de array, vanaf arr[1]): 3
CurrentIndex: 2
rangschikking: 1,2,3,4,5
---
accumulator (Op de 1e lus, accumulator is arr[0], dan is de geretourneerde waarde van de vorige lus): 6
huidige waarde (Doorloopt de array, vanaf arr[1]): 4
CurrentIndex: 3
rangschikking: 1,2,3,4,5
---
accumulator (Op de 1e lus, accumulator is arr[0], dan is de geretourneerde waarde van de vorige lus): 10
huidige waarde (Doorloopt de array, vanaf arr[1]): 5
CurrentIndex: 4
rangschikking: 1,2,3,4,5
---

 

Die de beginwaarde

Onder vermelding van de tweede parameter (beginwaarde) in the reduce function will cause initialValue to be passed in as the accumulator argument on the first loop.

Note that the current value on the 1st loop now starts at the first element of the array

Werkvoorbeeld

  Laat arr = [1,2,3,4,5];

  arr.reduce(
  (accumulator, huidige waarde, CurrentIndex, rangschikking) => {
    console.log(`accumulator ( On the 1st loop, this is the initial value, vervolgens de geretourneerde waarde van de vorige lus): ${accumulator}`);
    console.log(`CurrentValue (Doorloopt de array, vanaf arr[0]): ${huidige waarde}`);
    console.log(`CurrentIndex: ${CurrentIndex}`);
    console.log(`matrix: ${rangschikking}`);
    console.log('---');
    return accumulator + huidige waarde;
  }, 0
);

uitgang

accumulator ( On the 1st loop, this is the initial value, vervolgens de geretourneerde waarde van de vorige lus): 0
huidige waarde (Doorloopt de array, vanaf arr[0]): 1
CurrentIndex: 0
rangschikking: 1,2,3,4,5
---
accumulator ( On the 1st loop, this is the initial value, vervolgens de geretourneerde waarde van de vorige lus): 1
huidige waarde (Doorloopt de array, vanaf arr[0]): 2
CurrentIndex: 1
rangschikking: 1,2,3,4,5
---
accumulator ( On the 1st loop, this is the initial value, vervolgens de geretourneerde waarde van de vorige lus): 3
huidige waarde (Doorloopt de array, vanaf arr[0]): 3
CurrentIndex: 2
rangschikking: 1,2,3,4,5
---
accumulator ( On the 1st loop, this is the initial value, vervolgens de geretourneerde waarde van de vorige lus): 6
huidige waarde (Doorloopt de array, vanaf arr[0]): 4
CurrentIndex: 3
rangschikking: 1,2,3,4,5
---
accumulator ( On the 1st loop, this is the initial value, vervolgens de geretourneerde waarde van de vorige lus): 10
huidige waarde (Doorloopt de array, vanaf arr[0]): 5
CurrentIndex: 4
rangschikking: 1,2,3,4,5
---