@connecter

Как сокращать такие конструкции?

let link = (msg.fwd_messages[0] && msg.fwd_messages[0].attachments[0] && msg.fwd_messages[0].attachments[0].audio_message && msg.fwd_messages[0].attachments[0].audio_message.link_mp3) ? msg.fwd_messages[0].attachments[0].audio_message.link_mp3 : ((msg.attachments[0] && msg.attachments[0].audio_message && msg.attachments[0].audio_message.link_mp3) ? msg.attachments[0].audio_message.link_mp3 : '');


Если написать, к примеру
let link = msg.fwd_messages[0].attachments[0].audio_message.link_mp3 || msg.attachments[0].audio_message.link_mp3;

То выдаст ошибку, как можно это написать в более простом варианте?
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
BRAGA96
@BRAGA96
import { get } from 'lodash'
let link = get(msg, 'attachments[0].audio_message.link_mp3', '')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
В качестве шутки ради. Без использования библиотек.
(((((msg.fwd_messages||[])[0]||{}).attachments || [])[0] || {}).audio_message || {}).link_mp3 || (((msg.attachments || [])[0]||{}).audio_message || {}).link_mp3 || ''


Читабельности - 0 - черт ногу сломит
Поддержка = Читабельности

Но конструкция короче однозначно :D
Ответ написан
Ваш ответ на вопрос

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

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