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

В этой статье я расскажу о трех функциях высшего порядка в JavaScript: map(), filter() и reduce(). Все они представлены в ES6 и делают код короче и проще.

Метод карты

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

Петля:

const Array = [
  {
    name: "John Doe",
    age: 21
  },
  {
    name: "Abdellah",
    age: 23
  }
]
const newArray = []
for(let i = 0; i < Array.length; i++){
  newArray.push(Array[i])
}

Карта:

const Array = [
 {
 name: “John Doe”,
 age: 21
 },
 {
 name: “Abdellah”,
 age: 23
 }
]
const newArray = Array.map(arr => arr)

Вы видите разницу? в этом случае гораздо проще и лучше использовать карту, чем цикл for. Я также использовал синтаксис стрелочной функции, если вы не знакомы с этим, вы можете прочитать эту статью Стрелочная функция

Метод фильтра

Этот метод создает новый массив со всеми элементами, прошедшими проверку, предоставленную функцией обратный вызов. Метод filter упрощает фильтрацию массива элементов.

Пример:

const Array = [
 {
 name: “John Doe”,
 age: 22
 },
 {
 name: “Abdellah”,
 age: 23
 },
 {
 name: “Ace”,
 age: 23
 }
]
const newArray = Array.filter(item => item.age === 23)

Метод редуктора

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

Функция редуктора может принимать четыре аргумента: аккумулятор, текущее значение, текущий индекс и исходный массив.

При первом вызове функции аккумулятор будет равен либо первому значению в массиве, либо начальному значению, если вы его указали.

Аккумулятор — это значение, которое мы получим в конце, а currentValue — это текущий обрабатываемый элемент в массиве.

Пример:

const Array = [5 ,6 ,6]
const sum = Array.reduce((acc, val) => {
 return acc + val
})

В этом примере я использовал сокращение, чтобы получить сумму чисел внутри переменной. Это очень простой пример, но с сокращением можно сделать гораздо больше.

Заворачивать

Сопоставление, фильтрация и сокращение очень полезны в JavaScript и позволяют писать простой и короткий код по сравнению с другими традиционными способами, такими как цикл for. Я надеюсь, что вы узнали что-то из этой статьи. Это всего лишь обзор этих методов, если вы хотите получить более подробную информацию, есть много ресурсов, чтобы углубиться в них.