Функции высшего порядка и методы массивов в JavaScript (forEach, сопоставление, фильтрация, сокращение и сортировка)

В Javascript функции могут быть назначены переменным так же, как строки или массивы. Их можно передавать в другие функции в качестве параметров или возвращать из них.

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

Перезвонить

Обратный вызов — это функция, которую можно передать в качестве параметра другой функции. См. пример ниже:

Возвращающая функция

Функции высшего порядка возвращают функцию как значение

Давайте посмотрим, где мы используем функции обратного вызова. Например, метод forEach использует обратный вызов.

Назначить время

В JavaScript мы можем выполнять некоторые действия через определенный интервал времени или можем запланировать (подождать) некоторое время для выполнения некоторых действий.

  • setInterval
  • setTimeout

Установка интервала с помощью функции setInterval

В JavaScript мы используем функцию высшего порядка setInterval для непрерывного выполнения некоторых действий в течение некоторого интервала времени. Глобальный метод setInterval принимает функцию обратного вызова и продолжительность в качестве параметра. Продолжительность указана в миллисекундах, и обратный вызов всегда будет вызываться в этот интервал времени.

Установка времени с помощью setTimeout

В JavaScript мы используем функцию высшего порядка setTimeout для выполнения некоторого действия в какой-то момент в будущем. Глобальный метод setTimeout принимает функцию обратного вызова и продолжительность в качестве параметра. Продолжительность указана в миллисекундах, и обратный вызов ожидает это количество времени.

Функциональное программирование

Вместо написания обычных циклов в последней версии JavaScript появилось множество встроенных методов, которые могут помочь нам решить сложные проблемы. Все встроенные методы принимают функцию обратного вызова. В этом разделе мы увидим использование forEach, map, filter, reduce, find , каждый, некоторые и сортировка.

для каждого

forEach: итерация массива элементов. Мы используем forEach только с массивами. Он принимает функцию обратного вызова с элементами, индексным параметром и самим массивом. Индекс и массив необязательны.

карта

карта: итерация элементов массива и изменение элементов массива. Он принимает функцию обратного вызова с элементами, индексом, параметром массива и возвращает новый массив.

фильтр

Фильтр. Отфильтруйте элементы, соответствующие условиям фильтрации, и верните новый массив.

уменьшать

reduce: Reduce использует функцию обратного вызова. Функция обратного вызова принимает аккумулятор, текущее и необязательное начальное значение в качестве параметра и возвращает одно значение. Рекомендуется определить начальное значение для значения аккумулятора. Если мы не укажем этот параметр, по умолчанию аккумулятор получит массив first value. Если наш массив пустой, то Javascript выдаст ошибку.

Сортировать

sort: метод sort упорядочивает элементы массива в порядке возрастания или убывания. По умолчанию метод sort() сортирует значения как строки. Это хорошо работает для элементов строкового массива, но не для чисел. Если числовые значения сортируются как строки, это дает нам неправильный результат. Метод Sort изменяет исходный массив. Перед использованием метода sort рекомендуется скопировать исходные данные.

Сортировка строковых значений

Сортировка числовых значений

Как видно из приведенного ниже примера, число 100 появилось первым после сортировки в порядке возрастания. Сортировка преобразует элементы в строку, начиная с «100» и других сравниваемых чисел, 1 которых начало строки «100» стало наименьшим. Чтобы избежать этого, мы используем функцию обратного вызова сравнения внутри метода сортировки, которая возвращает отрицательное значение, ноль или положительное значение.

Сортировка массивов объектов

Всякий раз, когда мы сортируем объекты в массиве, мы используем ключ объекта для сравнения. Давайте посмотрим на пример ниже.

Узнайте, как использовать функции высшего порядка, здесь: https://www.sitepoint.com/higher-order-functions-javascript/ M. Дэвид Грин