解构多级并将默认值分配给第一级对象
Destructuring multilevel and and assigning default value to a first level object
我正在尝试解构来自 API 的响应。响应如下所示。
程序中只会用到a
和b
。
response = {
data: {
someData: {
a:1,
b:2
}
}
}
解构
const {data: { someData: { a,b } } } = response
现在,如果响应中不存在数据,应用程序可能会崩溃。我想将默认值设置为 data
和 someData
。有没有办法设置默认值?
已尝试:但抛出 lint 错误作为意外标记
const {data= {}: { someData = {}: { a,b } } } = response
您需要提供如下所示的默认值:
const {data: { someData: { a, b } = {} } = {} } = response;
MDN 文档上的 This example 显示默认值应该在末尾,而不是紧跟在 属性 名称之后。
如果解包的属性是undefined
,那么默认值将被用作嵌套解构的目标。
示例:
const response = {
data: {}
};
const {data: { someData: { a, b } = {} } = {} } = response;
console.log(a, b);
另一种选择是使用可选链接,在我看来,这是提高代码可读性的更好方法:
response?.data?.someData?.a
默认值放在最后,而不是紧跟在变量之后。
它需要 someData:
嵌套对象来提供默认值。
const response = {};
const {data: {someData: { a,b } } = {someData: {a:0, b:0}} } = response;
console.log(a, b);
我正在尝试解构来自 API 的响应。响应如下所示。
程序中只会用到a
和b
。
response = {
data: {
someData: {
a:1,
b:2
}
}
}
解构
const {data: { someData: { a,b } } } = response
现在,如果响应中不存在数据,应用程序可能会崩溃。我想将默认值设置为 data
和 someData
。有没有办法设置默认值?
已尝试:但抛出 lint 错误作为意外标记
const {data= {}: { someData = {}: { a,b } } } = response
您需要提供如下所示的默认值:
const {data: { someData: { a, b } = {} } = {} } = response;
MDN 文档上的 This example 显示默认值应该在末尾,而不是紧跟在 属性 名称之后。
如果解包的属性是undefined
,那么默认值将被用作嵌套解构的目标。
示例:
const response = {
data: {}
};
const {data: { someData: { a, b } = {} } = {} } = response;
console.log(a, b);
另一种选择是使用可选链接,在我看来,这是提高代码可读性的更好方法:
response?.data?.someData?.a
默认值放在最后,而不是紧跟在变量之后。
它需要 someData:
嵌套对象来提供默认值。
const response = {};
const {data: {someData: { a,b } } = {someData: {a:0, b:0}} } = response;
console.log(a, b);