@nickerlan

Как проверить на undefined в функциональном стиле?

Часто для выборок использую цепочки функций.
Например, чтобы распарсить ответ от API amoCRM я бы хотел написать что-то в духе

{
   product:lead._embedded.items[0].custom_fields.find(cf=>cf.id==PRODUCT_FIELD_ID).values[0].value
}


но всем понятно в чем проблема такой записи - если find вдруг не найдет то что нужно будет много мата из разряда cannot read property of undefined

Как это решить без нагромождения проверок?
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Ничего проверять не надо, undefined относится к falsy значениям, так что с помощью оператора || подставляйте пустой объект (или какое-нибудь другое значение - смотрите сами, как вам удобнее) там, где нужное значение может отсутствовать, например:

(((lead._embedded.items[0].custom_fields.find(cf => cf.id == PRODUCT_FIELD_ID) || {}).values || {})[0] || {}).value || null

UPD. Наконец-то дождались:

lead._embedded.items[0].custom_fields.find(cf => cf.id == PRODUCT_FIELD_ID)?.values[0].value ?? null
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 18:08
1000 руб./за проект
24 нояб. 2024, в 17:52
3000 руб./за проект
24 нояб. 2024, в 16:14
1000 руб./за проект