Метод 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,
    массивни текширишни бажаради