javascript — поиск вложенного свойства из объекта javascript

#javascript #ecmascript-6

Вопрос:

У меня может быть два типа полезной нагрузки.

 const payload = {
   "firstName":"Steven",
   "lastName":"Smith"
}
 

или

 const payload = {
   "personalDetails": {
       "firstName":"Steven",
       "lastName":"Smith"
    }
}
 

Как я могу получить имя пользователя из полезной нагрузки во время вызова REST API.

 const { firstName } = payload;  
 

Приведенный выше код будет работать для первой полезной нагрузки, но он не будет работать для второй полезной нагрузки, так firstName как вложен внутри personalDetails . Есть ли способ вернуть его ES6 обратно ?

Ответ №1:

 const { personalDetails: { firstName } } = payload;  
 

Подробнее о деструктуризации вложенных объектов.

Комментарии:

1. Спорно, какой из них чище, лично мне const { firstName } = payload.personalDetails кажется более чистым.

Ответ №2:

Вы можете взять personalDetails свойство, если нет undefined , или null или просто переменную напрямую.

 const { firstName } = payload.personalDetails ?? payload;
 

Комментарии:

1. думаю ?? , это более современно, не поддерживает мою кодовую базу.

2. вы могли бы взять логическое ИЛИ || вместо этого.

Ответ №3:

Странный сценарий у вас здесь, но это может решить проблему:

const { firstName } = payload.personalDetails ? payload.personalDetails : payload;