嵌套对象解构

4
当解构对象时,有时会遇到不知道键是否存在的问题,然后尝试从中提取值。由于它们未定义,因此会出现错误。例如:
期望得到像这样的结果:
{ user: { name: { first: 'Trey', last: 'Hakanson' } } }

但是实际上,我得到的是这个:
{ user: {} }

尝试像这样解构时会出错:
const { user: { name: { first: firstName, last: lastName } } } = data

有没有办法在解构过程中提前分配默认值?例如,如果name键不存在,则分配name = { first: 'Hello', last: 'World' }

2个回答

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

这样可以防止name未定义,但如果namenull仍会出错,对吗?有没有办法防止name既是undefined又是null呢? - Alan Hamlett
不要这样想,null 实际上是一个值。Undefined 只是表示该值尚未被定义。 - Mayday

-1

如果在您的情况下值为假值或未定义,您可以分配默认值。在JavaScript中,可以使用||运算符分配默认值。

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

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

谢谢你的回答!我目前正在使用这个解决方案,但我想寻找一个仅使用es6解构的解决方案。 - treyhakanson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接