Njia ya reduce
Njia reduce inaifunga safu hadi
thamani moja (inapunguza). Kwa mfano,
kwa kutumia njia hii kwa urahisi unaweza kupata jumla ya
vipengele vya safu (yaani safu itapunguzwa
hadi thamani moja - jumla ya vipengele).
Kigezo cha kwanza njia reduce hupokea
kitendakazi, ambacho kitatekelezwa kwa utaratibu
kwa kila kipengele cha safu, kuanzia cha kwanza.
Kwenye kitendakazi hiki unaweza kupitisha 4 vigezo.
Ikiwa vigezo hivi vipo (sio lazima),
basi kwa kiotomatiki kigezo cha kwanza kitapokea matokeo ya kati
, cha pili kitapokea kipengele cha
safu, cha tatu - nambari yake kwenye safu (fahirisi),
na cha nne - safu yenyewe.
Matokeo ya kati - hii ni mtumiaji anayobadilika,
ambayo ndani yake thamani itakusanyika,
ambayo njia reduce itairudisha, wakati
itapitia vipengele vyote vya safu. Kwa mfano,
huko kwa utaratibu unaweza kukusanya jumla ya
vipengele vya safu: kwanza weka kipengele cha kwanza,
wakati wa mzunguko unaofuata wa tanzi tayari
jumla ya kipengele cha kwanza na cha pili, wakati wa mzunguko
unaofuata - jumla ya kipengele cha kwanza, cha pili na cha tatu.
Na kadharika, mpaka safu itakapokwisha.
Kitendakazi, ambacho reduce hukipokea,
kinapaswa kurudisha thamani mpya ya matokeo ya kati.
Kigezo cha pili cha njia reduce huonyeshwa
thamani ya mwanzo ya matokeo ya kati.
Ikiwa haitaonyeshwa, basi itakuwa sawa na kipengele cha kwanza
cha safu, na uchakataji wa vipengele utaanza
na kipengele cha pili.
Sintaksia
safu.reduce(function(matokeo_ya_katikati, kipengele, fahirisi, safu) {
return matokeo_mpya_ya_katikati;
}, thamani_ya_mwanzo);
Mfano
Wacha tupate jumla ya vipengele vya safu:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(sum, elem) {
return sum + elem;
}, 0);
console.log(res);
Matokeo ya utekelezaji wa kificho:
21
Mfano
Wacha tupate jumla ya nambari zote chanya za safu:
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);
Matokeo ya utekelezaji wa kificho:
10