2016-12-15 104 views
4

當解構對象時,我有時會遇到不知道是否存在鍵的問題,然後嘗試從它們中提取值。這顯然是錯誤的,因爲它們是未定義的。例如:嵌套對象解構

期待這樣的事情:

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

但我居然得到這樣的:

{ user: {} } 

,並試圖解構這樣的錯誤:

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

有什麼在解構中早些時候分配默認值的方法?如name密鑰不存在,則分配name = { first: 'Hello', last: 'World' }

回答

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

正是我在找的東西,謝謝 – treyhakanson

+0

這個防止'name'被定義爲'undefined',但是如果'name'爲'null 「對嗎?任何防止'name'爲'undefined'或'null'的方法? –

+0

不要這樣認爲,null實際上是一個值。未定義僅表示它尚未定義該值 – Mayday

-1

如果值爲falsy值或您的情況未定義,您可以分配默認值。在JavaScript中,可以使用||運算符來分配默認值。

如果第一個操作數是虛假的(false, null, undefined, "",0)那麼它返回第二個操作數。否則,它返回第一個操作數。這提供了一種方便的方式來指定默認值

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

感謝您的回答!我正在使用這個解決方案,我正在尋找一個只使用es6解構的解決方案 – treyhakanson