Функции высшего порядка

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

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

const numbers = [1, 2, 3, 4, 5];

function changeSign(array) {
  for (let index = 0; index < array.length; index++) {
    console.log(array[index] * -1);
  }
}

changeSign(numbers);
Войти в полноэкранный режим Выйти из полноэкранного режима

Если для решения той же задачи использовать функции высшего порядка, например forEach(), то он завершится строкой.

numbers.forEach((value)=>console.log(value*-1));
Вход в полноэкранный режим Выход из полноэкранного режима

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

Мы можем увидеть некоторые функции высшего порядка в JavaScript:

  1. map()
  2. фильтр()
  3. reduce()
  4. forEach()
  5. каждый()

map()

  • Метод map() просто сопоставляет заданную функцию с каждым значением в массиве и возвращает новый массив.
  • Метод map() можно использовать, когда мы хотим перебрать все значения в массиве и изменить их при наступлении определенного условия.
  • Скажем, мы хотим возвести в квадрат каждый элемент массива, мы можем сделать это, не заботясь об индексе массива и даже без цикла for.
  let numbers=[1,2,3,4,5];
  const squares=numbers.map(value=>value*value);
Вход в полноэкранный режим Выйти из полноэкранного режима

filter()

  • Метод filter() создает новый массив из значений, удовлетворяющих условию, заданному внутри функции.
  • Он отфильтровывает нужный элемент из массива и создает из него новый массив.
  • Метод filter() пригодится, когда вы хотите исключить из массива ненужные элементы.
  • Допустим, если мы хотим вернуть из массива четные элементы.
  let numbers=[2,3,17,18,4,6];
  const even=numbers.filter(value=>value%2==0); //returns 2,18,4,6
Вход в полноэкранный режим Выйти из полноэкранного режима

reduce()

  • Метод reduce() уменьшает массив до одного элемента.
  • В своей функции он принимает максимум четыре параметра.

previousValue, currentValue, currentIndex, array

  • Метод reduce() можно легко понять, реализовав сумму всех значений в массиве.
  let numbers = [1, 2, 3];
  let initialValue=0;
  let sum = numbers.reduce(function (previousValue, currentValue) {
      return previousValue + currentValue;
  },initialValue);
Вход в полноэкранный режим Выход из полноэкранного режима
  • Метод reduce начинается с начального значения 0, первоначально previousValue будет равно 0(initialValue), а currentValue будет первым элементом массива. Затем, currentValue будет прибавлено к previousValue и результат будет сохранен в previousValue. Этот процесс будет повторяться до конца массива, после чего предыдущее значение будет возвращено и сохранено в sum.

forEach()

  • Метод forEach() выполняет заданную функцию по крайней мере один раз для каждого элемента.
  • Обычно он используется для печати элементов массива. Но на этом использование forEach() не заканчивается. Поскольку его можно применить к каждому элементу массива. Мы даже можем использовать ее для изменения отдельных элементов в массиве.
  let students = ['John', 'Sara', 'Jack'];

  // using forEach
  students.forEach((item, index, arr)=>{
        // adding strings to the array elements
        arr[index] = 'Hello ' + item;

  });
   //returns ["Hello John", "Hello Sara", "Hello Jack"]
Вход в полноэкранный режим Выход из полноэкранного режима

every()

  • Метод every() проверяет, все ли элементы в массиве удовлетворяют условию в заданной функции.
  • Если условие удовлетворяет всем элементам массива, то метод вернет true, в противном случае он вернет false.
  • Допустим, мы хотим проверить, все ли элементы больше 10 или заданного числа.
  function isBigEnough(element, index, array) {
    return element >= 10;
  }
  let numbers=[12, 5, 8, 130, 44];
  numbers.every(isBig);
Вход в полноэкранный режим Выйти из полноэкранного режима
  • Это не единственные функции высшего порядка в JavaScript. Изучение этих функций поможет вам писать более качественный код, а также вы будете хорошо разбираться в основах языка.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *