问题描述
嗨,我下面的对象结构是我试图使用解构技术来获取所有内部对象的名称,但无法做到这一点,下面是对象结构
{
massingType {
id
name
}
ashraeclimateZone {
id
name
}
sourceOfData {
id
name
}
.....
}
我正在按照如下方式进行破坏
constructionSetData.constructionSets.forEach(item => {
if (
item.ashraeclimateZone?.id === ashraeclimateZoneId &&
item.massingType?.id === massingTypeId &&
item.sourceOfData?.id === energyCodeId
) {
matchedConstructionDataSet.push(item.name);
const { sourceOfData: name,massingType: name,ashraeclimateZone: name } = item; // getting error here Identifier 'name' has already been declared
}
});
return matchedConstructionDataSet.length
? `${matchedConstructionDataSet.join(',')}` // here i need to use above names coming from three inner objects
: 'No construction set found with the current criteria';
任何人都可以让我知道如何实现此解决方案,在此先感谢!
解决方法
使用解构分配,您可以重命名任何解构变量。当前,您正在将每个“根”键重命名为name
,这会导致重复的声明,但是您似乎真的想访问和分解每个嵌套的name
属性。
const {
sourceOfData: {
name: sourceOfDataName,},massingType: {
name: massingTypeName,ashraeClimateZone: {
name: ashraeClimateZoneName,} = item;
考虑 just 上面的第一个变形值
- 从
sourceOfData
破坏item
- 将其重新分配给另一个对象
- 将
name
属性解构为 - 重新分配到
sourceOfDataName
。