Metode reduce

Metode reduce samazina masīvu līdz vienai vērtībai (reducē). Piemēram, ar šīs metodes palīdzību var viegli atrast masīva elementu summu (tas ir, masīvs tiks samazināts līdz vienai vērtībai - elementu summai).

Pirmo parametru metode reduce saņem funkciju, kas secīgi izpildīsies katram masīva elementam, sākot ar pirmo. Šajā funkcijā var padot 4 parametrus. Ja šie parametri ir (tie nav obligāti), tad pirmajā automātiski nonāks starprezultāts, otrajā nonāks masīva elements, trešajā - tā numurs masīvā (indekss), un ceturtajā - pats masīvs.

Starprezultāts - ir mainīgais, kurā uzkrāsies tā vērtība, ko atgriezīs metode reduce, kad izskatīs visus masīva elementus. Piemēram, tur secīgi var uzkrāt masīva elementu summu: vispirms ielikt pirmo elementu, nākamajā cikla gaitā jau summu no pirmā elementa un otrā, nākamajā gaitā - pirmā, otrā un trešā elementa summu. Un tā tālāk, līdz masīvs beigsies. Funkcija, ko pieņem reduce, jāatgriež jaunu starprezultāta vērtību.

Otrajā metodes reduce parametrā tiek norādīta starprezultāta sākotnējā vērtība. Ja tā netiks norādīta, tad tā būs vienāda ar pirmo masīva elementu, un elementu apstrāde sāksies ar otro elementu.

Sintakse

javascriptmass.reduce(function(starprezultats, elements, indekss, mass) {
  return jaunais starprezultats;
}, sakotnejāVertība);

Piemērs

Atradīsim masīva elementu summu:

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

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

console.log(res);

Koda izpildes rezultāts:

javascript21

Piemērs

Atradīsim visu pozitīvo skaitļu summu masīvā:

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

Koda izpildes rezultāts:

javascript10

Skatiet arī

  • metode reduceRight,
    kas veic līdzīgu darbību
  • metode filter,
    kas ļauj filtrēt masīva elementus
  • metodes map un forEach,
    kas ļauj pielietot funkciju katram masīva elementam
  • metodes some un every,
    kas veic masīva pārbaudi