JavaScript Масівы : Разуменне зніжэння функцыі

сінтаксіс

arr.reduce(callbackFunction, [initialValue])

Што рабіць памяншаюць?

Паменшыць гэта функцыя, якая завесы праз масіў.

Аперацыі могуць быць выкананы на масіве з дапамогай функцыі зваротнага выкліку.

У канцы аперацыі на масіве, знізіць вяртае адно значэнне

Зніжэнне можа быць выкарыстана, напрыклад, у агульнай складанасці ў кошык

прыклад

  хай обр = [1,2,3,4,5];
  arr.reduce( (акумулятар, CurrentValue, currentIndex, масіў) => { 
      //некаторыя аперацыі;
      вярнуць нешта;
  });

 

Зваротны выклік функцыі

Функцыя зваротнага выкліку выклікаецца для кожнага элемента ў масіве, пераходзячая ў 4 аргументы, якія перадаюцца з дапамогай функцыі памяншэння.

гэтыя 4 аргументы могуць быць выкарыстаны ў нашай функцыі зваротнага выкліку.

Прымае чатыры аргументу

  1. акумулятар – Першы элемент масіву на першым цыкле або пачатковае значэнне, калі яны прадастаўлены. Затым вяртаецца значэнне папярэдняга цыкла.
  2. CurrentValue – Бягучы элемент у масіве. Запускае ад другога элемента масіва, г.зн.. прыбыццё[1], калі пачатковая значэнне аргументу не перадаецца. Калі пачатковае значэнне аргументу перадаецца, то бягучае значэнне пачынаецца з 1-га элемента ў масіве обр[0].
  3. currentIndex – Індэкс бягучага элемента.
  4. масіў – увесь масіў.

працоўны прыклад

хай обр = [1,2,3,4,5];

arr.reduce(
  (акумулятар, CurrentValue, currentIndex, масіў) => {
    console.log(`акумулятар (На 1-ым цыкле, акумулятар обр[0], то вяртаецца значэнне папярэдняга цыкла): ${акумулятар}`);
    console.log(`CurrentValue (Контуры праз масіў, пачынаючы з обр[1]): ${CurrentValue}`);
    console.log(`currentIndex: ${currentIndex}`);
    console.log(`масіў: ${масіў}`);
    console.log('---');
    вяртанне акумулятара + CurrentValue;
  }
);

выхад

акумулятар (На 1-ым цыкле, акумулятар обр[0], то вяртаецца значэнне папярэдняга цыкла): 1
CurrentValue (Контуры праз масіў, пачынаючы з обр[1]): 2
currentIndex: 1
масіў: 1,2,3,4,5
---
акумулятар (На 1-ым цыкле, акумулятар обр[0], то вяртаецца значэнне папярэдняга цыкла): 3
CurrentValue (Контуры праз масіў, пачынаючы з обр[1]): 3
currentIndex: 2
масіў: 1,2,3,4,5
---
акумулятар (На 1-ым цыкле, акумулятар обр[0], то вяртаецца значэнне папярэдняга цыкла): 6
CurrentValue (Контуры праз масіў, пачынаючы з обр[1]): 4
currentIndex: 3
масіў: 1,2,3,4,5
---
акумулятар (На 1-ым цыкле, акумулятар обр[0], то вяртаецца значэнне папярэдняга цыкла): 10
CurrentValue (Контуры праз масіў, пачынаючы з обр[1]): 5
currentIndex: 4
масіў: 1,2,3,4,5
---

 

Забеспячэнне пачатковага значэння

Заданне другую опцыю (InitialValue) у функцыі зніжэння выкліча InitialValue быць прыняты ў якасці аргументу акумулятара на першым цыкле.

Звярніце ўвагу, што бягучае значэнне на 1-ым цыкле цяпер пачынаецца з першага элемента масіва

працоўны прыклад

  хай обр = [1,2,3,4,5];

  arr.reduce(
  (акумулятар, CurrentValue, currentIndex, масіў) => {
    console.log(`акумулятар ( На 1-ым цыкле, гэта пачатковае значэнне, то вяртаецца значэнне папярэдняга цыкла): ${акумулятар}`);
    console.log(`CurrentValue (Контуры праз масіў, пачынаючы з обр[0]): ${CurrentValue}`);
    console.log(`currentIndex: ${currentIndex}`);
    console.log(`масіў: ${масіў}`);
    console.log('---');
    вяртанне акумулятара + CurrentValue;
  }, 0
);

выхад

акумулятар ( На 1-ым цыкле, гэта пачатковае значэнне, то вяртаецца значэнне папярэдняга цыкла): 0
CurrentValue (Контуры праз масіў, пачынаючы з обр[0]): 1
currentIndex: 0
масіў: 1,2,3,4,5
---
акумулятар ( На 1-ым цыкле, гэта пачатковае значэнне, то вяртаецца значэнне папярэдняга цыкла): 1
CurrentValue (Контуры праз масіў, пачынаючы з обр[0]): 2
currentIndex: 1
масіў: 1,2,3,4,5
---
акумулятар ( На 1-ым цыкле, гэта пачатковае значэнне, то вяртаецца значэнне папярэдняга цыкла): 3
CurrentValue (Контуры праз масіў, пачынаючы з обр[0]): 3
currentIndex: 2
масіў: 1,2,3,4,5
---
акумулятар ( На 1-ым цыкле, гэта пачатковае значэнне, то вяртаецца значэнне папярэдняга цыкла): 6
CurrentValue (Контуры праз масіў, пачынаючы з обр[0]): 4
currentIndex: 3
масіў: 1,2,3,4,5
---
акумулятар ( На 1-ым цыкле, гэта пачатковае значэнне, то вяртаецца значэнне папярэдняга цыкла): 10
CurrentValue (Контуры праз масіў, пачынаючы з обр[0]): 5
currentIndex: 4
масіў: 1,2,3,4,5
---