Javascript Arrays : Forstå redusere funksjon

syntax

arr.reduce(callbackFunction, [initialValue])

Hva gjør redusere gjøre?

Reduser er en funksjon som looper gjennom en oppstilling.

Operasjoner kan utføres på rekken via en tilbakeringings funksjon.

Ved slutten av operasjonene på matrisen, redusere returnerer en enkelt verdi

Reduser kan brukes, for eksempel, å totalt en handlekurv

Eksempel

  la arr = [1,2,3,4,5];
  arr.reduce( (akkumulator, nåværende verdi, currentIndex, matrise) => { 
      //noen operasjoner;
      tilbake noe;
  });

 

Den tilbakeringingsfunksjonen

Den tilbakeringings funksjonen aktiviseres for hvert element i matrisen, passerer 4 argumenter som sendes inn av reduseringsfunksjonen.

Disse 4 argumenter kan da brukes i vår tilbakeringingsfunksjon.

Tar fire argumenter

  1. akkumulator – Det første elementet i arrayet på den første sløyfen eller initialverdien hvis den leveres. Deretter returnerte verdien av forrige sløyfe.
  2. nåværende verdi – Det gjeldende elementet i matrisen. Starter fra det andre elementet i matrisen, dvs. arr[1], når startverdiargumentet ikke er bestått. Hvis initialverdiargumentet blir bestått, starter gjeldende verdi fra det første elementet i matrisen arr[0].
  3. currentIndex – Indeksen til det gjeldende elementet.
  4. matrise – Hele utvalget.

Arbeidseksempel

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

arr.reduce(
  (akkumulator, nåværende verdi, currentIndex, matrise) => {
    console.log(`akkumulator (På 1. sløyfe, akkumulator er arr[0], da er det den returnerte verdien av forrige sløyfe): ${akkumulator}`);
    console.log(`current Value (Sløyfer gjennom arrayet, starter ved arr[1]): ${nåværende verdi}`);
    console.log(`currentIndex: ${currentIndex}`);
    console.log(`array: ${matrise}`);
    console.log('---');
    returakkumulator + nåværende verdi;
  }
);

Produksjon

akkumulator (På 1. sløyfe, akkumulator er arr[0], da er det den returnerte verdien av forrige sløyfe): 1
nåværende verdi (Sløyfer gjennom arrayet, starter ved arr[1]): 2
currentIndex: 1
matrise: 1,2,3,4,5
---
akkumulator (På 1. sløyfe, akkumulator er arr[0], da er det den returnerte verdien av forrige sløyfe): 3
nåværende verdi (Sløyfer gjennom arrayet, starter ved arr[1]): 3
currentIndex: 2
matrise: 1,2,3,4,5
---
akkumulator (På 1. sløyfe, akkumulator er arr[0], da er det den returnerte verdien av forrige sløyfe): 6
nåværende verdi (Sløyfer gjennom arrayet, starter ved arr[1]): 4
currentIndex: 3
matrise: 1,2,3,4,5
---
akkumulator (På 1. sløyfe, akkumulator er arr[0], da er det den returnerte verdien av forrige sløyfe): 10
nåværende verdi (Sløyfer gjennom arrayet, starter ved arr[1]): 5
currentIndex: 4
matrise: 1,2,3,4,5
---

 

Oppgi startverdien

Spesifisere den andre parameteren (Opprinnelig verdi) i reduseringsfunksjonen vil føre til at initialValue sendes inn som akkumulatorargumentet på den første sløyfen.

Merk at gjeldende verdi på den første sløyfen nå starter ved det første elementet i matrisen

Arbeidseksempel

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

  arr.reduce(
  (akkumulator, nåværende verdi, currentIndex, matrise) => {
    console.log(`akkumulator ( På 1. løkke, dette er startverdien, deretter den returnerte verdien av forrige sløyfe): ${akkumulator}`);
    console.log(`current Value (Sløyfer gjennom arrayet, starter ved arr[0]): ${nåværende verdi}`);
    console.log(`currentIndex: ${currentIndex}`);
    console.log(`array: ${matrise}`);
    console.log('---');
    returakkumulator + nåværende verdi;
  }, 0
);

Produksjon

akkumulator ( På 1. løkke, dette er startverdien, deretter den returnerte verdien av forrige sløyfe): 0
nåværende verdi (Sløyfer gjennom arrayet, starter ved arr[0]): 1
currentIndex: 0
matrise: 1,2,3,4,5
---
akkumulator ( På 1. løkke, dette er startverdien, deretter den returnerte verdien av forrige sløyfe): 1
nåværende verdi (Sløyfer gjennom arrayet, starter ved arr[0]): 2
currentIndex: 1
matrise: 1,2,3,4,5
---
akkumulator ( På 1. løkke, dette er startverdien, deretter den returnerte verdien av forrige sløyfe): 3
nåværende verdi (Sløyfer gjennom arrayet, starter ved arr[0]): 3
currentIndex: 2
matrise: 1,2,3,4,5
---
akkumulator ( På 1. løkke, dette er startverdien, deretter den returnerte verdien av forrige sløyfe): 6
nåværende verdi (Sløyfer gjennom arrayet, starter ved arr[0]): 4
currentIndex: 3
matrise: 1,2,3,4,5
---
akkumulator ( På 1. løkke, dette er startverdien, deretter den returnerte verdien av forrige sløyfe): 10
nåværende verdi (Sløyfer gjennom arrayet, starter ved arr[0]): 5
currentIndex: 4
matrise: 1,2,3,4,5
---