Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

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() працює аналогічно методу reduce(), але ітерація починається з останнього елемента масиву і рухається до першого. Це особливо корисно, коли ви хочете застосувати функцію аккумулятора у зворотньому порядку.

Нотатка:

Як і метод reduce(), функція аккумулятора, яку ви передаєте методу reduceRight(), приймає чотири аргументи: аккумулятор, поточний елемент масиву, поточний індекс та сам масив. Ви можете використовувати ці аргументи для створення складних функцій обробки масиву.

Нотатка:

Виклик 'reduceRight()' на пустому масиві без початкового значення призводить до виникнення помилки 'TypeError'.

Порада:

При використанні методу reduceRight() варто мати на увазі, що він може бути корисним для обробки масивів, які зберігають дані в зворотньому порядку, наприклад, масивів дат або записів журналу. Ви можете використовувати метод reduceRight() для зведення масиву до одного значення, яке представляє сумарну або агреговану інформацію.

Нотатка:

Метод reduceRight() є універсальним. Він вимагає, щоб значення this містило властивість length і властивості з цілочисельними ключами.

Синтаксис

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"