我有一个对象
const complicatedObject = {
propertyA: {
property1: 1,
property2: 2
},
propertyB: {
property1: 1,
property2: 2
}
}
如果我想抢propertyA
,我会
const { propertyA } = complicatedObject
console.log(propertyA) // { property1: 1, property2: 2}
如果我想获取propertyA's
property1
的价值,
const { propertyA: { property1 } } = complicatedObject
console.log(property1) // 1
我可以这样抓取propertyA
和propertyA's
property1
。
const {
propertyA,
propertyA: {
property1
}
} = complicatedObject
console.log(propertyA) // { property1: 1, property2: 2}
console.log(property1) // 1
是否有一种更简单的方法来同时获得propertyA
和property1
?
我阅读了以下内容,但我觉得没有什么可以作为答案了。
谢谢!
答案 0 :(得分:3)
只需使用两个单独的解构语句,如下所示:
const { propertyA } = complicatedObject;
const { property1 } = propertyA;
演示:
const complicatedObject = {
propertyA: {
property1: 1,
property2: 2
},
propertyB: {
property1: 1,
property2: 2
}
}
const { propertyA } = complicatedObject;
const { property1 } = propertyA;
console.log(propertyA);
console.log(property1);
但是,如果您想使用最简洁的代码,并且只想要property1
的值(1
),则可以改用以下方法:
const { propertyA: { property1 } } = complicatedObject;
演示:
const complicatedObject = {
propertyA: {
property1: 1,
property2: 2
},
propertyB: {
property1: 1,
property2: 2
}
}
const { propertyA: { property1 } } = complicatedObject;
console.log(property1);
希望这会有所帮助!
答案 1 :(得分:2)
这是正确的方法:
const {
propertyA,
propertyA: {
property1
}
} = complicatedObject
如果要访问propertyA和property1而不使用多个声明。
console.log(propertyA) // { property1: 1, property2: 2}
console.log(property1) // 1
但是如果我是你,我会做的就像
const { propertyA } = complicatedObject
console.log(propertyA)
console.log(propertyA.property1)
或者,使用多个声明:
const { propertyA } = complicatedObject,
{ property1 } = propertyA
console.log(propertyA, property1)
实际上,您发布信息的目的是质疑使用方式,例如:
const { propertyA: { property1 } } = complicatedObject
console.log(propertyA, property1)
我会说,这是不可能的。因为,用冒号构造对象只是该属性的别名。例如。
const { propertyA: A } = complicatedObject
console.log(A) // works as if it is propertyA
console.log(propertyA) // won't work because propertyA is transformed to A
类似地
const { propertyA: { property1 } } = complicatedObject
propertyA
转换为{ property1 }
,可以访问property1
。
也是property1
的别名,
const { propertyA: { property1: prop1 } } = complicatedObject
console.log(prop1)