Найти тему
Работяги

Почему Ramda.JS, а не Lodash? Часть 2 - path, pathOr, paths

Всем привет! Продолжаем микроцикл статей, посвященных очень удобному инструменту для функциональной работы в JS/TS коде, который называется Ramda.JS. По сути, эта библиотека является логическим продолжением и развитием широко известной и уважаемой библиотеки Lodash, без которой многие JS-разработчики уже не могут представить работы.

Сегодня мы разберем работу функций, очень похожих, на те, что мы рассматривали в первой части микроцикла. Итак, начнем с функции path. Эта функция, возвращает значение свойства, расположенного по определенному «пути» внутри объекта. Как мы помним, функция prop возвращает значение конкретного свойства объекта, но если это свойство будет вложенным – prop не сможет его вернуть. Тут то на помощь нам и приходит функция path. Рассмотрим пример на скриншоте ниже.

-2

Как видим, функция prop хороша лишь для «плоских» объектов, либо для получения свойств верхнего уровня в объекте.

Итак, функция path принимает на вход два аргумента. Первый – это массив, в котором в последовательности слева направо перечислены имена свойств или индексы, из которых составляется «путь» до значения. Второй – сам объект. Рассмотрим еще пару примеров применения функции path.

-3

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

Чтобы облегчить эту задачу, можно использовать функцию pathOr, которая позволяет возвращать некоторое преопределённое значение вместо undefined, в случае если по указанному пути не удалось найти значение. Рассмотрим пару примеров применения.

-4

Но что, если нам нужно выбрать не одно, а сразу несколько свойств объекта? И желательно сделать это одним действием, не прибегая к сложным конструкциям и циклам? На помощь спешит функция paths принимающая массив путей объекта, по каждому из которых попытается получить значение свойства. Давайте рассмотрим это на примере.

-5

Как вы видите, рассмотренные в сегодняшней статье функции библиотеки Ramda представляют собой мощный и удобный инструмент для манипуляции и преобразования данных, без мутации исходных объектов.

Не забывайте поддержать нас подпиской, поставить лайк этой статье, если она вам понравилась, а также оставить свой комментарий если это было вам полезно, или наоборот – вы с чем-то не согласны😊

Ссылки на наши ресурсы – ниже:

https://t.me/podcust_rabot9g

https://www.youtube.com/@Rabot9gi

https://vk.com/rabot9gi