使用嵌套对象的默认对象进行结构分解

问题描述 投票:0回答:1

我有一个要求,我必须从一个嵌套对象中获取几个值,当这些值不可用时,应该从默认对象中获取。例如,考虑以下对象:

const objToDestructure={
   outerObj:{ 
   }
}

如果我想从field1中获取两个字段field2outerObj,那么我能做的是

const { outerObj = {field1:22,field2:33}}=objToDestructure;
const {field1,field2}=outerObj;

无论如何,这可以进一步缩短吗?我尝试执行以下操作:

const { outerObj:{field1,field2} = {field1:22,field2:33}}=objToDestructure;

但是我将两个值都设为undefined。有什么原因为什么这个方法行不通,但是个人作业却可以?

javascript object ecmascript-6 javascript-objects destructuring
1个回答
1
投票

设置一个默认的空对象,并为每个字段添加一个默认值:

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。

© www.soinside.com 2019 - 2024. All rights reserved.