Metod reduce

Metod reduce massiw bir bahä düşürýär (redukirleýär). Mysal üçin, bu metodiň kömegi bilen massiw elementleriniň jemiňi aňsat tapyp bolýar (ýagny massiw bir bahä - elementleriň jemine düşüriler).

Metod reduce birinji parametr hökmünde funksiýany alýar, bu funksiýa massiwüň her bir elementi üçin yzygider, birinjisinden başlap, ýerine ýetiriler. Bu funksiýa 4 parametr geçirip bolýar. Eger bu parametrler bar bolsa (olar hökman däl), onda birinjisine awtomatik töwerek ara netije düşer, ikinjisine massiw elementi, üçünjisine - onuň massiwdäki nomeri (indeks), dördünjisine - massiwüň özi düşer.

Ara netije - bu üýtgeýän, ol metod reduce massiwüň ähli elementlerini gaýdyp geçensoň, yzygider netijäni ýygnar. Mysal üçin, ol ýere massiw elementleriniň jemi yzygider ýygnap bolýar: ilki birinji element goýular, siklüň indiki geçişinde eýýäm birinji we ikkinji elementleriň jemi, indiki geçişde - bir, iki we üçünji elementleriň jemi. We şeýle, massiw gutarýança. Metod reduce tarapyndan kabul edilýän funksiýa, täze ara netije bahasyny yzyna gaýtarmaly.

Metod reduce tarapyndan ikinji parametr hökmünde ara netijäniň başlangyç bahasy görkezilýär. Eger görkezilmeýän bolsa, onda ol birinji massiw elementine deň bolar, we elementleri işlemek ikinji elementden başlar.

Sintaksis

javascriptmassiw.reduce(function(ara netije, element, indeks, massiw) {
  return täze ara netije;
}, başlangyç bahasy);

Mysal

Massiw elementleriniň jemini tapalyň:

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

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

console.log(res);

Kody ýerine ýetirmegiň netijesi:

javascript21

Mysal

Massiwüň ähli poztitif sanlarynyň jemini tapalyň:

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

Kody ýerine ýetirmegiň netijesi:

javascript10

Şeýle-de garaň

  • metod reduceRight,
    meňzeş operasiýany ýerine ýetirýär
  • metod filter,
    massiw elementlerini süzüp geçmäge mümkinçilik berýär
  • metodlar map we forEach,
    massiwüň her bir elementine funksiýany ulanyp bolýar
  • metodlar some we every,
    massiwüň barlagyny ýerine ýetirýär