Почти все проблемы, с которыми мы, разработчики, сталкиваемся каждый день, могут быть решены путем решения набора меньших проблем — небольших решений отдельных четко определенных проблем. Эти решения лучше всего можно описать как «чистые функции».
Хотя большинство этих функций реализованы в разных библиотеках — важно понимать, как и когда разбивать сложные задачи на более мелкие. Такой подход к решению проблем повысит вашу продуктивность и сделает вас лучшим разработчиком.
Ниже приведен неупорядоченный набор из 20 полезных «чистых функций», которые я регулярно использую для решения всевозможных задач.
Получить значение
Учитывая object
или array
— функция вернет значение по указанному пути, иначе null.
Зажим
Убедитесь, что значение находится в указанном диапазоне, в противном случае «зажмите» до ближайшего из значений minimum
и maximum
.
Спать
Подождите указанное duration
в миллисекундах перед выполнением следующей операции.
Группа по
Группируйте и индексируйте связанные элементы в объекте в соответствии с функцией ключа.
Собрать
Создавайте вложенные списки, содержащие связанные элементы в соответствии с функцией ключей.
Голова
Получить первый элемент списка. Эта функция полезна для написания чистого и читаемого кода.
Хвост
Получить все, кроме первого элемента списка. Эта функция полезна для написания чистого и читаемого кода.
Сгладить
Создайте плоский список, рекурсивно извлекая все элементы из вложенных подсписков.
Пересечение
Найдите все значения, присутствующие в обоих списках, как определено функцией ввода.
Индекс по
Индексируйте каждый элемент в списке по значению, определяемому функцией ключа.
Разница по
Найдите в первом списке все элементы, которых нет во втором списке, что определяется функцией ключа.
Восстановить с помощью
Возвращает значение по умолчанию, если данная функция выдает ошибку Error
.
Расстояние
Вычислите евклидово расстояние между двумя точками p1 & p2
.
Бросьте, пока
Удаляет элементы из списка, начиная с первого элемента, пока не встретится предикат som.
Сумма по
Вычислить сумму всех элементов в списке с заданной функцией, которая выдает индивидуальное значение каждого элемента.
Восходящий
Создает функцию сравнения по возрастанию с учетом функции оценивания.
По убыванию
Создает функцию-компаратор по убыванию с учетом оценивающей функции.
Найти ключ
Найдите первый ключ в индексе, который удовлетворяет заданному предикату.
Раздвоение по
Разделите значения данного списка на два списка, один из которых содержит значения, которые функция предиката оценивает как истинные, а другой список содержит ложные.
Трубка
Выполните композицию функций слева направо. Все лишние аргументы будут переданы первой функции в списке, поэтому арность может быть любой. Результат будет передан второму, а результат второго будет передан третьему,… и так далее, пока не будут обработаны все функции.
Последние мысли
Хотя все эти функции могут быть действительно полезны для решения задач, над которыми вы работаете, самый важный урок — научиться разбивать сложные и трудные проблемы на небольшие четко определенные проблемы, которые можно решить независимо. Как только вы освоите это — вы уже на пути к тому, чтобы стать отличным разработчиком!
Спасибо за чтение и надеюсь, вам понравилось!