В JavaScript есть множество стандартных и полезных методов, многими из которых программисты любят пренебрегать, а зря! Здесь я хочу разобрать крайней интересный и полезный метод массивов - reduce().
Метод Array.reduce () "сокращает" массив до одного значения, вычисляет один результат на основании всех элементов в массиве. Метод reduce() принимает одну функцию в качестве первого аргумента и одно начальное значение в качестве второго необязательного аргумента. Функция выполняется для каждого элемента массива и возвращает значение, которое дополнительно предоставляется в качестве первого аргумента (accumulator) для следующего вызова функции.
array.reduce(reducerFunction, initialValue);
reducerFunction принимает два обязательных аргумента: accumulator и currentValue. Accumulator - это либо начальное значение, либо ранее возвращенное значение. Второй аргумент - это значение текущего элемента.
function reducerFunction(accumulator, currentValue, currentIndex, array) {}
reducerFunction также принимает два необязательных аргумента - currentIndex и array. CurrentIndex - это индекс currentValue в массиве, а последний необязательный аргумент - это массив, для которого был вызван метод reduce().
Как работает метод reduce ()
Давайте попробуем суммировать все значения в массиве.
Итак, функция reducerFunction вызывается в первый раз с аргументами 25 и 48 и возвращает 73. В следующий раз функция reducerFunction вызывается с ранее возвращенным значением 73 и следующим элементом 13 и возвращает 86.
Мы можем проверить, сколько раз вызывалась функция reducerFunction и значения её аргументов, выводя промежуточные результаты с помощью console.log.
Вывод в консоли будет выглядеть следующим образом:
25 48
73 13
Если мы передадим начальное значение функции reducerFunction, тогда для первого вызова начальное значение будет первым аргументом, а первый элемент массива будет вторым аргументом.
Вывод в консоли:
0 25
25 48
73 13
86
Давайте посмотрим еще несколько примеров использования метода reduce().
Ещё примеры
Найти максимальное и минимальное число в массиве
Если у нас есть массив чисел, то мы можем найти как максимальное, так и минимальное число, сравнивая каждые числа массива попарно.
Почти так же мы можем найти минимальное число:
Преобразовать массив в объект
Предположим, у нас есть массив объектов студентов. У каждого студента есть имя и баллы за семестр.
Теперь мы хотим создать один объект из массива с именами студентов в качестве ключей и их баллами в качестве значений. Давайте посмотрим, как это сделать с помощью reduce().
В консоли будет вот такой вывод:
{
Joey: 41,
Monica: 83,
Ross: 92,
Rachel: 51,
Chandler: 76,
Pheobe: 45
}
Заключение
Я хочу сказать, что JavaScript это безусловно прекрасный язык, по крайней мере для меня. И в своём арсенале он имеет огромное количество классных методов и функций, многими из которых, к сожалению, программисты любят пренебрегать, хотя делать этого не стоит. Напротив стоит выучить стандартные методы JS и использовать их, ведь как мы видим на примере reduce(), они сокращают объем кода и делают его более элегантным и читаемым.
Спасибо за просмотр, если вам понравилась статья, можете оценить её пальцем вверх и написать комментарий.
Если вы хотите больше подобного контента, то приглашаю вас перейти на мой канал и посмотреть множество других статей по JavaScript, а также подписаться, чтобы не пропустить новых публикаций, которые выходят на канале почти каждый день.