2016-12-15 6 views
4

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

Ожидать что-то вроде этого:

{ user: { name: { first: 'Trey', last: 'Hakanson' } } } 

Но я на самом деле получить это:

{ user: {} } 

и пытается destructure как этого ошибки:

const { user: { name: { first: firstName, last: lastName } } } = data 

есть ли способ присвоить значение по умолчанию ранее в деконструкции? Например, если назначить name = { first: 'Hello', last: 'World' }, если ключ name не существует?

ответ

6
const { user: { name: { first: firstName = 'firstName', last: lastName = 'lastName' } = {} } = {} } = data 
+0

Точно, что я искал, спасибо – treyhakanson

+0

Это защищает от 'name'' 'undefined', но все же ошибки, если' name' является 'null «Правильно? Любой способ защитить от 'name' как' undefined' или 'null'? –

+0

Не думайте так, что null на самом деле является значением. Undefined просто означает, что не было определено, что значение – Mayday

-1

Вы можете назначить значения по умолчанию, если это значение является ложным или неопределенным в вашем случае. В javascript значения по умолчанию могут быть назначены с помощью оператора ||.

Если первый операнд является ложным (false, null, undefined, "",0), он возвращает второй операнд. В противном случае он возвращает первый операнд. Это обеспечивает удобный способ для определения значений по умолчанию

var myDefaultName = name || { first: 'Hello', last: 'World' } 
+0

Спасибо за ответ! Я в настоящее время использую это решение, я искал решение, используя только es6 deconstruction, хотя – treyhakanson

Смежные вопросы