@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

Как это решить без нагромождения проверок?
  • Вопрос задан
  • 134 просмотра
Решения вопроса 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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы