Javascript 在es6中解析对象时,如果对象中存在值,则存储变量
我有一个对象,如下所示:Javascript 在es6中解析对象时,如果对象中存在值,则存储变量,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个对象,如下所示: { "_attrib": { "PieChart": "T", "ProductSettings": "true" }, "WATER": { "_attrib": { "Step": "5", "ProgressAdjust&
{
"_attrib": {
"PieChart": "T",
"ProductSettings": "true"
},
"WATER": {
"_attrib": {
"Step": "5",
"ProgressAdjust": "41",
}
},
"TEMP": {
"_attrib": {
"Argument": "F7",
"Default": "00"
},
"ITEM": [
{
"_attrib": {
"Name": "Low",
}
},
{
"_attrib": {
"Name": "Normal",
}
},
{
"_attrib": {
"Name": "High",
}
}
]
}
}
我需要解析的是找到ProgressAdjust的设置位置,然后将名称(在本例中为WATER)添加到数组中
我有以下代码,但是数组有所有名称(即:_attrib、water、temp)
任何帮助都将不胜感激。- 使用
将对象转换为键/值对数组Object.entries
- 使用
和array#Filter
- 最后,使用
仅提取密钥Array#map
const
obj={u attrib:{PieChart:{T],ProductSettings:{true},WATER:{u attrib:{Step:{5],ProgressAdjust:{41}},TEMP:{u attrib:{参数:“F7”,默认值:“00”},项:[{{{u attrib:{Name:{Low”},{u attrib:{Name:{Normal nom”},{Name:{High”},
res=Object.entries(obj).filter([,o])=>o?\u attrib?.ProgressAdjust.map([k])=>k)
console.log(res)
对象的结构是否与问题中显示的相同<代码>\u attrib是根道具的某个地方,以及嵌套的两个层次的某个地方。是的,对象与此完全相同。它们表示不同项目的属性。如果项目
数组中的任何属性
道具具有进度调整
是否要将项目
添加到结果数组中?进度调整只显示在较高级别的属性中,例如在水和温度中,如果其中一个显示我需要在阵列中添加水或温度,请查看我的答案,如果它解决了您的问题,请告诉我您是否有任何问题@akano1
export const productCustomizationOptions = (product: any) => {
const options = [];
Object.entries(product.product).forEach((item1, index1) => {
Object.values(item1[1]).forEach((item2) => {
if (item2.ProgressAdjust !== 'undefined') {
options.push(item1[0]);
}
});
});
console.log('customization options: ', options);
};