Я пытаюсь создать тернарное выражение, чем когда оно истинно, я назначу объекту несколько новых ключей. Это возвращает ошибку:

const entity = {};

    element.data.icon ? 
    entity['url'] = element.data.icon.data.image[0].url 
    entity['alt'] = element.data.icon.data.image[0].alt
    entity['title'] = element.data.icon.data.image[0].title :
    entity['url'] = ''

Я пытаюсь получить эквивалент этого:

const entity = {};
if (element.data.icon) {
        entity['url'] = element.data.icon.data.image[0].url 
        entity['alt'] = element.data.icon.data.image[0].alt
        entity['title'] = element.data.icon.data.image[0].title 
    }
    entity['url'] = '' 

Как я должен это делать? если возможно

1
flow24 21 Янв 2021 в 13:00

2 ответа

Лучший ответ

Почему бы просто не использовать версию if? Было бы более читабельно.

Сказав это, вы можете использовать запятые так:

element.data.icon ? 
  ? (entity['url'] = element.data.icon.data.image[0].url,
     entity['alt'] = element.data.icon.data.image[0].alt,
     entity['title'] = element.data.icon.data.image[0].title)
  : entity['url'] = '';
3
Aurel Bílý 21 Янв 2021 в 10:03

Вы можете использовать троицу для назначения различных полных объектов:

const entity = element.data.icon 
    ? {
        url: element.data.icon.data.image[0].url, 
        alt: element.data.icon.data.image[0].alt,
        title: element.data.icon.data.image[0].title
    } 
    : { 
        url: ""
    };
2
trincot 21 Янв 2021 в 10:05
65825020