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"
