我有一个要求,我必须从一个嵌套对象中获取几个值,当这些值不可用时,应该从默认对象中获取。例如,考虑以下对象:
const objToDestructure={
outerObj:{
}
}
如果我想从field1
中获取两个字段field2
和outerObj
,那么我能做的是
const { outerObj = {field1:22,field2:33}}=objToDestructure;
const {field1,field2}=outerObj;
无论如何,这可以进一步缩短吗?我尝试执行以下操作:
const { outerObj:{field1,field2} = {field1:22,field2:33}}=objToDestructure;
但是我将两个值都设为undefined
。有什么原因为什么这个方法行不通,但是个人作业却可以?
设置一个默认的空对象,并为每个字段添加一个默认值:
const { outerObj:{ field1 = 22, field2 = 33} = {}} = objToDestructure;
示例:
const { outerObj: { field1 = 22, field2 = 33} = {}} = {}
console.log(field1, field2)
而且您还可以为outerObj
设置默认值(如您之前所尝试的:]
<!-- begin snippet: js hide: false console: true babel: false -->
注意:1和2之间的区别在于,如果存在outerObj
,则不会使用默认值2。只要各个属性不存在,就会使用默认值1。