Page 122 - 6105
P. 122
Найпростіше зрозуміти роботу методу reduce на прикладі. Наприклад, в
якості «згортки» ми хочемо отримати суму всіх елементів масиву.
Ось рішення в один рядок:
var arr = [1, 2, 3, 4, 5]
// для кожного елемента масиву запустити функцію,
// проміжний результат передавати першим аргументом
далі
var result = arr.reduce (function (sum, current) {
return sum + current;
}, 0);
alert (result); // 15
Розберемо біль детально роботу даного коду. При першому запуску sum -
початкове значення, з якого починаються обчислення, дорівнює нулю (другий
аргумент reduce). Спочатку анонімна функція викликається з цим початковим
значенням і першим елементом масиву, результат запам'ятовується і передається в
наступний виклик, вже з другим аргументом масиву, потім нове значення бере
участь в обчисленнях з третім аргументом і так далі. Подамо кожен крок роботи
програми у вигляді таблиці де кожен рядок – виклик функції на черговому
елементі масиву:
sum current результат
перший виклик 0 1 + 1
другий виклик 1 2 3
третій виклик 3 3 6
четвертий виклик 6 4 10
п'ятий виклик 10 5 15
Як видно, результат попереднього виклику передається в перший аргумент
наступного. До речі, повний набір аргументів функції для reduce включає в себе
121