JavaScript Arrays : Forstå reducere funktionen

Syntaks

arr.reduce(callbackFunction, [initialValue])

Hvad betyder reducere gøre?

Reducer er en funktion, sløjfer gennem et array.

Handlinger kan udføres på arrayet via en tilbagekaldsfunktion.

Ved afslutningen af ​​de operationer på array, reducere returnerer en enkelt værdi

Reducer kan bruges, for eksempel, i alt en indkøbskurv

Eksempel

  Lad arr = [1,2,3,4,5];
  arr.reduce( (akkumulator, nuværende værdi, currentIndex, matrix) => { 
      //nogle operationer;
      returnere noget;
  });

 

Funktionen tilbagekald

Tilbagekaldsfunktionen kaldes for hvert element i arrayet, passerer i 4 argumenter, der sendes videre af reduceringsfunktionen.

Disse 4 argumenter så kan bruges i vores callback funktion.

Tager fire argumenter

  1. akkumulator – Det første element i arrayet på den første sløjfe eller startværdi hvis leveret. Så den returnerede værdi af den foregående løkke.
  2. nuværende værdi – Det aktuelle element i arrayet. Starter fra det andet element i array dvs.. arr[1], når den oprindelige værdi argumentet ikke er bestået. Hvis den oprindelige værdi argument gået så aktuel værdi starter fra den 1. element i array arr[0].
  3. currentIndex – Indekset for det aktuelle element.
  4. matrix – Hele arrayet.

Udførelseseksempel

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

arr.reduce(
  (akkumulator, nuværende værdi, currentIndex, matrix) => {
    console.log(`akkumulator (På 1. løkke, akkumulator er arr[0], så er den returnerede værdi af den foregående løkke): ${akkumulator}`);
    console.log(`CurrentValue (Sløjfer gennem opstillingen, begyndende ved arr[1]): ${nuværende værdi}`);
    console.log(`currentIndex: ${currentIndex}`);
    console.log(`matrix: ${matrix}`);
    console.log('---');
    tilbageløbsakkumulatoren + nuværende værdi;
  }
);

Produktion

akkumulator (På 1. løkke, akkumulator er arr[0], så er den returnerede værdi af den foregående løkke): 1
nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[1]): 2
currentIndex: 1
matrix: 1,2,3,4,5
---
akkumulator (På 1. løkke, akkumulator er arr[0], så er den returnerede værdi af den foregående løkke): 3
nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[1]): 3
currentIndex: 2
matrix: 1,2,3,4,5
---
akkumulator (På 1. løkke, akkumulator er arr[0], så er den returnerede værdi af den foregående løkke): 6
nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[1]): 4
currentIndex: 3
matrix: 1,2,3,4,5
---
akkumulator (På 1. løkke, akkumulator er arr[0], så er den returnerede værdi af den foregående løkke): 10
nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[1]): 5
currentIndex: 4
matrix: 1,2,3,4,5
---

 

Giver den oprindelige værdi

Angivelse den anden parameter (startværdi) i reducere funktionen vil forårsage initialValue at være bestået, som akkumulatoren argument på den første sløjfe.

Bemærk, at den aktuelle værdi på 1. løkke nu starter ved det første element af array

Udførelseseksempel

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

  arr.reduce(
  (akkumulator, nuværende værdi, currentIndex, matrix) => {
    console.log(`akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): ${akkumulator}`);
    console.log(`CurrentValue (Sløjfer gennem opstillingen, begyndende ved arr[0]): ${nuværende værdi}`);
    console.log(`currentIndex: ${currentIndex}`);
    console.log(`matrix: ${matrix}`);
    console.log('---');
    tilbageløbsakkumulatoren + nuværende værdi;
  }, 0
);

Produktion

akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): 0
nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[0]): 1
currentIndex: 0
matrix: 1,2,3,4,5
---
akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): 1
nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[0]): 2
currentIndex: 1
matrix: 1,2,3,4,5
---
akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): 3
nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[0]): 3
currentIndex: 2
matrix: 1,2,3,4,5
---
akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): 6
nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[0]): 4
currentIndex: 3
matrix: 1,2,3,4,5
---
akkumulator ( På 1. løkke, dette er den oprindelige værdi, derefter den returnerede værdi af den foregående løkke): 10
nuværende værdi (Sløjfer gennem opstillingen, begyndende ved arr[0]): 5
currentIndex: 4
matrix: 1,2,3,4,5
---