嵌套对象解构

时间:2016-12-15 18:56:12

标签: javascript object ecmascript-6 destructuring

在解构对象时,我有时会遇到不知道密钥是否存在的问题,然后尝试从它们中提取值。这显然是错误,因为它们是未定义的。例如:

期待这样的事情:

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

但我实际上得到了这个:

{ user: {} }

并尝试像这样的错误进行解构:

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

有没有办法在解构前面指定一个默认值?例如,如果name = { first: 'Hello', last: 'World' }密钥不存在,则分配name

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:-1)

如果值为伪值或未定义,则可以指定默认值。在javascript中,可以使用||运算符分配默认值。

如果第一个操作数是假的(false, null, undefined, "",0),则返回第二个操作数。否则,它返回第一个操作数。这提供了一种指定默认值的便捷方式

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