Метод reduce

reduce методу массивди бир мааниге кысат (редукциялайт). Мисалы, бул методдун жардамы менен массив элементтеринин суммасын оңой эле табууга болот (башкача айтканда массив бир мааниге - элементтердин суммасына кысалат).

reduce методу биринчи параметр катары функцияны алат, ал функция массивдин ар бир элементи үчүн биринчиден баштап ирет менен аткарылат. Бул функцияга 4 параметр берилиши мүмкүн. Эгерде бул параметрлер бар болсо (алар милдеттүү эмес), анда биринчисине аралык натыйжа автоматтык түрдө түшөт, экинчисине массивдин элементи түшөт, үчүнчүсүнө - анын массивдеги номуру (индекси), төртүнчүсүнө - массивдин өзү.

Аралык натыйжа - бул өзгөрмө, анда reduce методу массивдин бардык элементтерин кайталап чыкканда кайтара турган маани топтолот. Мисалы, анда массив элементтеринин суммасын ирет менен топтоого болот: алгач биринчи элементин салуу, кийинки цикл айлануусунда эми биринчи элементтин жана экинчинин суммасы, кийинки айланууда - биринчинин, экинчинин жана үчүнчүнүн суммасы. Жана ушундай, массив аякка чейин. reduce кабыл алган функция, аралык натыйжанын жаңы маанисин кайтаруусу керек.

reduce методунун экинчи параметри катары аралык натыйжанын баштапкы мааниси көрсөтүлөт. Эгерде аны көрсөтүлбөсө, анда ал биринчи элементине барабар болот, ал эми элементтерди иштетүү экинчи элементтен башталат.

Синтаксис

javascriptмассив.reduce(function(аралык натыйжа, элемент, индекси, массив) {
  return жаңы аралык натыйжа;
}, баштапкы маани);

Мисал

Массив элементтеринин суммасын табалы:

javascriptlet arr = [1, 2, 3, 4, 5, 6];

let res = arr.reduce(function(sum, elem) {
  return sum + elem;
}, 0);

console.log(res);

Кодду аткаруунун натыйжасы:

javascript21

Мисал

Келгиле, массивдин бардык оң сандарынын суммасын табалы:

javascriptlet arr = [1, -2, -3, 4, 5, -6];

let res = arr.reduce(function(sum, elem) {
  if (elem >= 0) {
    return sum + elem;
  } else {
    return sum;
  }
}, 0);

console.log(res);

Кодду аткаруунун натыйжасы:

javascript10

Ошондой эле караңыз

  • reduceRight методу,
    окшош амалды аткарат
  • filter методу,
    массив элементтерин фильтрлөөгө мүмкүндүк берет
  • map жана forEach методдору,
    функцияны массивдин ар бир элементине колдонууга мүмкүндүк берет
  • some жана every методдору,
    массивди текшерүүнү аткарат