Функции высокого порядка в Javascript — это функции, обладающие одним или обоими из следующих признаков:

  1. Принимает другую функцию в качестве аргумента
  2. Возвращает другую функцию

К счастью для нас, Javascript поставляется со многими функциями высокого порядка, встроенными в язык. Ниже представлены некоторые из наиболее удобных и часто используемых функций высокого порядка.

для каждого()

Этот встроенный в язык метод будет перебирать массив элементов и выполнять функцию для каждого из этих элементов. Эта функция будет передана forEach() в качестве аргумента.

В этом примере мы создали массив фруктов и сохранили его в константе arrayFruits. Что важно в этом методе, так это то, что он работает только с массивами. Затем мы вызвали метод forEach() для массива и передали функцию обратного вызова в качестве аргумента. Работа функции обратного вызова состоит в том, чтобы взять каждый элемент массива и записать его в консоль Chrome. Это то, что вы видите в последних трех строках кода.

Ниже приведен еще один пример, но на этот раз с использованием чисел и умножением каждого отдельного числа на 3.

карта()

Этот метод очень похож на forEach() тем, что он перебирает массив, содержащий разные элементы, и принимает функцию в качестве аргумента. Затем функция будет выполняться для каждого элемента массива. Единственная разница между ними заключается в том, что map() создает совершенно новый массив. Это может показаться не очень важным, но если вы когда-нибудь начнете использовать React (библиотеку Javascript для создания пользовательского интерфейса), метод map() преобладает в React.

Еще раз создаем новый массив с числами. Поскольку map() возвращает новый массив, мы создали новую переменную для хранения этого нового массива. Затем мы зарегистрировали две переменные. В первом журнале мы видим исходный массив, а во втором журнале — новый массив, созданный методом map().

найти()

Что ж, название этого метода очень хорошо объясняет, в чем заключается его работа. Но если вы не можете догадаться, что она делает, она в основном находит первый элемент в массиве, который удовлетворяет условию, указанному в функции (также известной как функция обратного вызова). это будет считаться аргументом. Метод find() вернет этот элемент.

В приведенном выше коде мы используем ту же переменную, что и раньше, но на этот раз мы используем метод find() для перебора массива. В блоке кода функции обратного вызова мы указали условие. Условие состоит в том, чтобы вернуть первое число, для которого условие оценивается как истинное, другими словами, если число больше 20, верните его мне.

Этот метод может быть полезен, если вы ищете определенный элемент в массиве.

фильтр()

Затем у нас есть метод filter(), и его цель — вернуть новый массив с всеми элементами, которые передают условие внутри функции, которая передается в качестве аргумента. Этот метод имеет некоторое сходство с методом find().

И снова у нас есть наш старый, но надежный массив чисел. Мы использовали для него filter(), это вернет совершенно новый массив с элементами, для которых условие оценено как true. Сначала мы зарегистрировали исходный массив и вернули его неповрежденным. Затем мы записали нашу новую константу filteredArray, и результатом стал совершенно новый массив, но только с элементами, которые прошли наше условие. Подсказка: этот метод часто используется и в React.

уменьшать()

Этот метод используется не так часто, как предыдущие, но я думаю, что в некоторых ситуациях он может быть очень полезен. Вы можете использовать его, чтобы сложить все элементы вместе, если элементы имеют type number. Я думаю, что пример может сделать лучше, чем я объясняю это.

Как всегда, мы начинаем с объявления переменной, которая оценивается как массив. Затем мы вызываем метод reduce() для этого массива и передаем ему функцию обратного вызова. В отличие от предыдущих методов, которые ожидают по крайней мере один аргумент в функции обратного вызова, reduce() ожидает по крайней мере два. Первый аргумент — это accumulator, и его цель — служить контейнером для хранения накопленного значения каждой итерации. Если не указано, accumulator начинается со значения 0.

Второй аргумент в функции обратного вызова представляет каждое отдельное число в массиве. Внутри блока кода мы добавляем каждый элемент в аккумулятор. Позвольте мне рассказать вам, как reduce() творит чудеса.

В первой итерации аккумулятор имеет значение 12 (0 +12).

  • 0 представляет начальное значение аккумулятора
  • 12 представляет первый элемент массива, который затем добавляется в аккумулятор.
  • теперь аккумулятор имеет значение 12

На второй итерации аккумулятор имеет значение 44 (12 + 32).

  • 12 представляет текущее значение аккумулятора, полученное на первой итерации.
  • 32 — второй элемент массива.
  • аккумулятор теперь имеет значение 44

Этот процесс продолжается до тех пор, пока в массиве не останется элементов для итерации. Затем reduce() возвращает последнее значение аккумулятора.

Есть много других функций высокого порядка, которые поставляются из коробки в Javascript, если вы хотите узнать больше, вы можете нажать здесь.

Спасибо за чтение.