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

javascriptsafu.reduce(function(matokeo_ya_katikati, kipengele, fahirisi, safu) {
  return matokeo_mpya_ya_katikati;
}, thamani_ya_mwanzo);

Mfano

Wacha tupate jumla ya vipengele vya safu:

javascriptlet 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:

javascript21

Mfano

Wacha tupate jumla ya nambari zote chanya za safu:

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);

Matokeo ya utekelezaji wa kificho:

javascript10

Angalia pia

  • Njia reduceRight,
    inayofanya operesheni inayofanana
  • Njia filter,
    ambayo inaruhusu kuchuja vipengele vya safu
  • Njia map na forEach,
    ambazo huruhusu kutumia kitendakazi kwa kila kipengele cha safu
  • Njia some na every,
    zinazofanya ukaguzi wa safu