Метод reduce
Метод reduce массиви
бир қийматга йиғади (редуцира қилади). Масалан,
ушбу метод ёрдамида массиви элементларининг йиғиндисини
осонгина топиш мумкин (яъни массив бир қийматга - элементларининг йиғиндисига айланади).
Метод reduce биринчи параметр сифатида
функцияни қабул қилади, бу функция массивинг ҳар бир элементи учун
биринчидан бошлаб кетма-кет бажарилади.
Бу функцияга 4 параметр бериш мумкин.
Агар бу параметрлар мавжуд бўлса (улар мажбурий эмас),
у ҳолда биринчисига автоматик равишда араловчи
натижа тушади, иккинчисига массивинг элементи тушади, учинчисига - унинг массивидаги номери (индекс),
тўртинчисига эса - массивининг ўзи.
Араловчи натижа - бу ўзгармас қиймат бўлиб, унда
reduce метожи массивинг барча элементларини айлантириб чиққанда қайтарадиган
қиймат тўпланади. Масалан,
унга кетма-кет равишда массиви элементларининг йиғиндисини
топиш мумкин: аввал биринчи элементини қўйиш, кейинги айланиш даврасида энди
биринчи ва иккинчи элементларининг йиғиндисини, кейинги
даврада - биринчи, иккинчи ва учинчининг йиғиндисини.
Ва ҳоказо, массив тугагунча.
reduce қабул қиладиган функция,
араловчи натижанинг янги қийматини қайтариши керак.
reduce метожининг иккинчи параметри сифатида
араловчи натижанинг бошланғич қиймати кўрсатилади.
Агар уни кўрсатилмаса, у ҳолда у биринчи
элементининг қийматига тенг бўлади, ва элементларини ишлов бериш
иккинчи элементдан бошланади.
Синтаксис
массив.reduce(function(араловчи натижа, элемент, индекс, массив) {
return янги араловчи натижа;
}, бошланғич қиймат);
Мисол
Массиви элементларининг йиғиндисини топамиз:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(sum, elem) {
return sum + elem;
}, 0);
console.log(res);
Кодни бажариш натижаси:
21
Мисол
Келинг, массивинг барча мусбат сонларининг йиғиндисини топамиз:
let 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);
Кодни бажариш натижаси:
10