JavaScript Arrays : Förstå minska funktion
Syntax
arr.reduce(callbackFunction, [initialValue])
Vad minskar göra?
Minska är en funktion som loopar genom en rad.
Operationer kan utföras på matrisen via en callback-funktion.
Vid slutet av verksamheten på matrisen, minska returer ett enda värde
Minska kan användas, till exempel, uppgå till en kundvagn
Exempel
låt arr = [1,2,3,4,5];
arr.reduce( (ackumulator, nuvarande värde, CURRENT, array) => {
//vissa operationer;
tillbaka något;
});
Callback-funktionen
Funktionen återanropet anropas för varje element i arrayen, passerar 4 argument som förs in av minska funktion.
Dessa 4 argument sedan kan användas i våra callback-funktion.
Tar fyra argument
- ackumulator – Det första elementet i matrisen på den första slingan eller initialvärde om de tillhandahålls. Sedan returnerade värdet av den tidigare slingan.
- nuvarande värde – Det aktuella elementet i arrayen. Startar från det andra elementet i arrayen dvs.. arr[1], när initialvärdet argument inte får passera. Om det initiala värdet argumentet ledes sedan strömvärde startar från 1:a element i arrayen arr[0].
- CURRENT – Index för den aktuella elementet.
- array – Hela uppsättningen.
arbets~~POS=TRUNC
låt arr = [1,2,3,4,5]; arr.reduce( (ackumulator, nuvarande värde, CURRENT, array) => { console.log('ackumulator (På 1:e slinga, ackumulator är arr[0], då är det returnerade värdet av den föregående slingan): ${ackumulator}'); console.log(`Current (Loopar genom uppsättningen, början vid arr[1]): ${nuvarande värde}'); console.log(`CURRENT: ${CURRENT}'); console.log(`array: ${array}'); console.log('---'); retur ackumulator + nuvarande värde; } );
Produktion
ackumulator (På 1:e slinga, ackumulator är arr[0], då är det returnerade värdet av den föregående slingan): 1 nuvarande värde (Loopar genom uppsättningen, början vid arr[1]): 2 CURRENT: 1 array: 1,2,3,4,5 --- ackumulator (På 1:e slinga, ackumulator är arr[0], då är det returnerade värdet av den föregående slingan): 3 nuvarande värde (Loopar genom uppsättningen, början vid arr[1]): 3 CURRENT: 2 array: 1,2,3,4,5 --- ackumulator (På 1:e slinga, ackumulator är arr[0], då är det returnerade värdet av den föregående slingan): 6 nuvarande värde (Loopar genom uppsättningen, början vid arr[1]): 4 CURRENT: 3 array: 1,2,3,4,5 --- ackumulator (På 1:e slinga, ackumulator är arr[0], då är det returnerade värdet av den föregående slingan): 10 nuvarande värde (Loopar genom uppsättningen, början vid arr[1]): 5 CURRENT: 4 array: 1,2,3,4,5 ---
Tillhandahåller det initiala värdet
Specificerar den andra parametern (ursprungligt värde) i minska funktionen kommer att orsaka initialValue att föras in som ackumulatorn argument på den första slingan.
Observera att det aktuella värdet på 1: a slingan börjar nu vid det första elementet i matrisen
arbets~~POS=TRUNC
låt arr = [1,2,3,4,5]; arr.reduce( (ackumulator, nuvarande värde, CURRENT, array) => { console.log('ackumulator ( På 1: a slinga, detta är det initiala värdet, då det returnerade värdet av den föregående slingan): ${ackumulator}'); console.log(`Current (Loopar genom uppsättningen, början vid arr[0]): ${nuvarande värde}'); console.log(`CURRENT: ${CURRENT}'); console.log(`array: ${array}'); console.log('---'); retur ackumulator + nuvarande värde; }, 0 );
Produktion
ackumulator ( På 1: a slinga, detta är det initiala värdet, då det returnerade värdet av den föregående slingan): 0 nuvarande värde (Loopar genom uppsättningen, början vid arr[0]): 1 CURRENT: 0 array: 1,2,3,4,5 --- ackumulator ( På 1: a slinga, detta är det initiala värdet, då det returnerade värdet av den föregående slingan): 1 nuvarande värde (Loopar genom uppsättningen, början vid arr[0]): 2 CURRENT: 1 array: 1,2,3,4,5 --- ackumulator ( På 1: a slinga, detta är det initiala värdet, då det returnerade värdet av den föregående slingan): 3 nuvarande värde (Loopar genom uppsättningen, början vid arr[0]): 3 CURRENT: 2 array: 1,2,3,4,5 --- ackumulator ( På 1: a slinga, detta är det initiala värdet, då det returnerade värdet av den föregående slingan): 6 nuvarande värde (Loopar genom uppsättningen, början vid arr[0]): 4 CURRENT: 3 array: 1,2,3,4,5 --- ackumulator ( På 1: a slinga, detta är det initiala värdet, då det returnerade värdet av den föregående slingan): 10 nuvarande värde (Loopar genom uppsättningen, början vid arr[0]): 5 CURRENT: 4 array: 1,2,3,4,5 ---
