Всем привет! Продолжаем микроцикл статей, посвященных очень удобному инструменту для функциональной работы в JS/TS коде, который называется Ramda.JS. По сути, эта библиотека является логическим продолжением и развитием широко известной и уважаемой библиотеки Lodash, без которой многие JS-разработчики уже не могут представить работы.
Сегодня мы разберем работу функций, очень похожих, на те, что мы рассматривали в первой части микроцикла. Итак, начнем с функции path. Эта функция, возвращает значение свойства, расположенного по определенному «пути» внутри объекта. Как мы помним, функция prop возвращает значение конкретного свойства объекта, но если это свойство будет вложенным – prop не сможет его вернуть. Тут то на помощь нам и приходит функция path. Рассмотрим пример на скриншоте ниже.
Как видим, функция prop хороша лишь для «плоских» объектов, либо для получения свойств верхнего уровня в объекте.
Итак, функция path принимает на вход два аргумента. Первый – это массив, в котором в последовательности слева направо перечислены имена свойств или индексы, из которых составляется «путь» до значения. Второй – сам объект. Рассмотрим еще пару примеров применения функции path.
При этом, как мы видим, если значение по указанному пути не удалось найти, то мы получаем значение undefined, что не всегда может быть удобно для нас и требует дополнительной обработки этой ситуации.
Чтобы облегчить эту задачу, можно использовать функцию pathOr, которая позволяет возвращать некоторое преопределённое значение вместо undefined, в случае если по указанному пути не удалось найти значение. Рассмотрим пару примеров применения.
Но что, если нам нужно выбрать не одно, а сразу несколько свойств объекта? И желательно сделать это одним действием, не прибегая к сложным конструкциям и циклам? На помощь спешит функция paths принимающая массив путей объекта, по каждому из которых попытается получить значение свойства. Давайте рассмотрим это на примере.
Как вы видите, рассмотренные в сегодняшней статье функции библиотеки Ramda представляют собой мощный и удобный инструмент для манипуляции и преобразования данных, без мутации исходных объектов.
Не забывайте поддержать нас подпиской, поставить лайк этой статье, если она вам понравилась, а также оставить свой комментарий если это было вам полезно, или наоборот – вы с чем-то не согласны😊
Ссылки на наши ресурсы – ниже: