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

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

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

Получить значение

Учитывая object или array — функция вернет значение по указанному пути, иначе null.

Зажим

Убедитесь, что значение находится в указанном диапазоне, в противном случае «зажмите» до ближайшего из значений minimum и maximum.

Спать

Подождите указанное duration в миллисекундах перед выполнением следующей операции.

Группа по

Группируйте и индексируйте связанные элементы в объекте в соответствии с функцией ключа.

Собрать

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

Голова

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

Хвост

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

Сгладить

Создайте плоский список, рекурсивно извлекая все элементы из вложенных подсписков.

Пересечение

Найдите все значения, присутствующие в обоих списках, как определено функцией ввода.

Индекс по

Индексируйте каждый элемент в списке по значению, определяемому функцией ключа.

Разница по

Найдите в первом списке все элементы, которых нет во втором списке, что определяется функцией ключа.

Восстановить с помощью

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

Расстояние

Вычислите евклидово расстояние между двумя точками p1 & p2.

Бросьте, пока

Удаляет элементы из списка, начиная с первого элемента, пока не встретится предикат som.

Сумма по

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

Восходящий

Создает функцию сравнения по возрастанию с учетом функции оценивания.

По убыванию

Создает функцию-компаратор по убыванию с учетом оценивающей функции.

Найти ключ

Найдите первый ключ в индексе, который удовлетворяет заданному предикату.

Раздвоение по

Разделите значения данного списка на два списка, один из которых содержит значения, которые функция предиката оценивает как истинные, а другой список содержит ложные.

Трубка

Выполните композицию функций слева направо. Все лишние аргументы будут переданы первой функции в списке, поэтому арность может быть любой. Результат будет передан второму, а результат второго будет передан третьему,… и так далее, пока не будут обработаны все функции.

Последние мысли

Хотя все эти функции могут быть действительно полезны для решения задач, над которыми вы работаете, самый важный урок — научиться разбивать сложные и трудные проблемы на небольшие четко определенные проблемы, которые можно решить независимо. Как только вы освоите это — вы уже на пути к тому, чтобы стать отличным разработчиком!

Спасибо за чтение и надеюсь, вам понравилось!