@svk44

Когда применять arr.reduce?

Изучаю методы работы с массивами.
Поработал с map, filter, reduce.
map - меняет элемент массива, но не размерность.
filter - меняет размерность массива, но не элемент.
reduce может делать и то, и то, как я понимаю.
Сейчас тренируюсь на заданиях с массивами. Условно есть 15 заданий - исходя из мыслей выше, легко становится понятно где применять map, а где filter. Есть ли какие-либо указатели на то, чтобы определить, что нужен именно reduce?
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
otdameskapizm
@otdameskapizm
Помог ответ? Отметь решением...
Вы правы, reduce может делать и отображение и фильтрацию. Но в основном данную функцию применяют, когда при проходе коллекции нужно собрать определенный результат. Причем неважно какой: это может быть другой массив или объект, а может быть и примитивный тип данных типа строка или число. Все зависит от задачи
Как правильно писали выше, самый яркий пример и одновременно простой пример - нахождение суммы всех элементов массива. Вы делаете агрегацию - то есть приведение целой системы к одному результату.

[1, 2, 3, 4, 5].reduce((acc, item) => acc += item, 0); // 15
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F Куратор тега JavaScript
Когда сочтёте нужным. Типа, подумали, и решили - здесь reduce нужен. Или не нужен. Да, подумали. Для этого у вас есть особый инструмент - голова называется.
Ответ написан
Комментировать
Lynn
@Lynn
nginx, js, css
По своей природе «задумка» reduce это свести массив к одному значению. То что иногда это значение может быть объектом/массивом это уже вариации.

Классический пример это суммирование элементов массива.
[1, 2, 3, 4].reduce((sum, val) => { return sum + val }, 0)
// → 10


Но порой reduce используют для каких-то «экзотических» задач. Например хочу объект с ключами которые хранятся в массиве:
['foo', 'bar', 'quux'].reduce((obj, key) => { obj[key] = true; return obj; }, {});
// → { foo: true, bar: true, quux: true }

На выходе мы получили объект, но концептуально мы всё ещё «свели» 3 значения массива к одному значению — объекту.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы