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

  1. 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.
  2. 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].
  3. CURRENT – Index för den aktuella elementet.
  4. 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
---