JS метод Array.reduceRight()
Опис
Метод reduceRight()
надає можливість об'єднати елементи масиву в одне значення, ітеруючись по масиву з права на ліво. Тобто він працює в зворотному порядку відносно традиційного методу reduce()
. Він виконує функцію callbackFn
для кожного елемента масиву, починаючи з останнього і йдучи до першого, накопичуючи результат. Важливо відзначити, що callbackFn
викликається лише для тих індексів масиву, які мають визначені значення. В розріджених масивах пусті індекси будуть пропущені.
На відміну від деяких інших ітераційних методів, reduceRight()
не приймає аргумент thisArg
. Замість цього, контекст this
для callbackFn
завжди буде undefined
. Якщо callbackFn
не виконується в строгому режимі, то undefined
заміщується globalThis
.
Метод reduceRight()
не змінює оригінальний масив. Однак функція, передана як callbackFn
, може це робити. Також слід враховувати:
callbackFn
не буде взаємодіяти з елементами, доданими після того, якreduceRight()
було викликано.- Жодні зміни в уже оброблених індексах не спричинять новий виклик
callbackFn
. - Якщо елемент масиву, що ще не був відвіданий, змінюється
callbackFn
, його значення буде таким, яким воно було під час його обробки. Видалені елементи не будуть відвідані.
Розглянемо приклад:
let numbers = [1, 2, 3, 4];
let result = numbers.reduceRight((accumulator, currentValue) => accumulator - currentValue);
console.log(result); // Output: -2
У цьому прикладі ми віднімаємо числа з масиву починаючи з кінця: 4−3−2−1=−24−3−2−1=−2
. Таким чином, результатом виконання коду буде -2
.
Нотатка: | Метод |
Нотатка: | Як і метод |
Нотатка: | Виклик 'reduceRight()' на пустому масиві без початкового значення призводить до виникнення помилки 'TypeError'. |
Порада: | При використанні методу |
Нотатка: | Метод |
Синтаксис
reduceRight(callbackFn)
reduceRight(callbackFn, initialValue)
Параметри
- *
callbackFn
Функція, яку потрібно виконати для кожного елемента масиву. Її повернений результат стає значенням параметра-накопичувача (
accumulator
) при наступному виклику зворотної функції (callbackFn
).Функція
callbackFn
викликається з наступними аргументами:accumulator
: Значення, отримане в результаті попереднього викликуcallbackFn
. При першому виклику це будеinitialValue
, якщо вказано, в іншому випадку - значення останнього елемента масиву.currentValue
: Поточний елемент, який обробляється у масиві.index
: Індекс поточного елемента, який обробляється в масиві.array
: Масив, на якому було викликаноreduceRight()
.
initialValue
Значення, що служить аккумулятором (
accumulator
) під час ініціалізації зворотнього виклику (callbackFn
). У випадку відсутностіinitialValue
, буде використаний останній елемент масиву (і буде виключений з обчислень).
Return
value
Значення, яке отримано в ході редукції масиву.
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
3 |
3 |
1 |
10.5 |
12 |
Переглядач | ||||
---|---|---|---|---|
37 |
18 |
4 |
3.2 |
Переглядач | ||
---|---|---|
0.10.0 |
1.0 |
Приклади
Цей приклад демонструє використання методу reduceRight()
для об'єднання підмасивів в один масив. Оригінальні підмасиви [[0, 1], [2, 3], [4, 5]]
будуть об'єднані у масив [4, 5, 2, 3, 0, 1]
.
Як працює reduceRight()
без початкового значення.
[0, 1, 2, 3, 4].reduceRight(
(accumulator, currentValue, index, array) => accumulator + currentValue,
);
Як працює reduceRight()
з початковим значенням.
[0, 1, 2, 3, 4].reduceRight(
(accumulator, currentValue, index, array) => accumulator + currentValue,
10,
);
Підрахувати суму всіх значень в масиві.
const sum = [0, 1, 2, 3].reduceRight((a, b) => a + b);
// 6
Відмінності між методами reduce()
і reduceRight()
.
const a = ["1", "2", "3", "4", "5"];
const left = a.reduce((prev, cur) => prev + cur);
const right = a.reduceRight((prev, cur) => prev + cur);
console.log(left); // "12345"
console.log(right); // "54321"