Запіс на курсы па HTML, CSS, JavaScript, PHP, Python, фрэймворкам і CMS,
а таксама: дапамога ў пошуку працы і заказаў, стажыроўка на рэальных праектах→
108 of 264 menu

Метад 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

Глядзіце таксама

  • метад reduceRight,
    які выконвае падобную аперацыю
  • метад filter,
    які дазваляе фільтраваць элементы масіва
  • метады map і forEach,
    якія дазваляюць ужыць функцыю да кожнага элемента масіва
  • метады some і every,
    якія выконваюць праверку масіва
byenru