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
- 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.
- 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].
- currentIndex – Indeksen til det gjeldende elementet.
- 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 ---
