Переупорядочить аргументы функции

Beginner

This tutorial is from open-source community. Access the source code

Введение

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

Как переупорядочить аргументы функции в JavaScript

Для переупорядочивания аргументов функции в JavaScript можно использовать функцию rearg(). Сначала создайте функцию, которая вызывает предоставленную функцию с ее аргументами, расположенными в соответствии с указанными индексами. Вы можете использовать Array.prototype.map() для переупорядочивания аргументов на основе indexes. Затем используйте оператор расширения (...), чтобы передать преобразованные аргументы в fn.

Вот пример того, как использовать функцию rearg():

const rearg =
  (fn, indexes) =>
  (...args) =>
    fn(...indexes.map((i) => args[i]));

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

var rearged = rearg(
  function (a, b, c) {
    return [a, b, c];
  },
  [2, 0, 1]
);
rearged("b", "c", "a"); // ['a', 'b', 'c']

В коде выше мы создаем новую функцию rearged, которая переупорядочивает аргументы функции function(a, b, c) { return [a, b, c]; }. Аргумент indexes задает порядок, в котором аргументы должны быть переупорядочены. В этом случае мы хотим, чтобы третий аргумент был первым, первый аргумент был вторым и второй аргумент был третьим. Когда мы вызываем rearged('b', 'c', 'a'), возвращается ['a', 'b', 'c'], что является результатом вызова исходной функции с переупорядоченными аргументами.

Резюме

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