我有JSON数据,其值如下:status -> pla -> wea -> wea_0 -> stat
它们是pla
内部的一系列wea_0, wea_1, wea_2,...
我试着检查他们的stat
是否是acte
这是我的代码:
if (status.pla.wea.wea_0.stat === 'acte') {
save_acte();
} else if (status.pla.wea.wea_1.stat === 'acte') {
save_acte();
} else if (status.pla.wea.wea_2.stat === 'acte') {
save_acte();
} else if (status.pla.wea.wea_3.stat === 'acte') {
save_acte();
} else if (status.pla.wea.wea_4.stat === 'acte') {
save_acte();
} else if (status.pla.wea.wea_5.stat === 'acte') {
save_acte();
} else if (status.pla.wea.wea_6.stat === 'acte') {
save_acte();
}
请帮我把它改为loop
或for
。
访问wea_x
作为动态名称为的属性
for (let i = 0; i < 7; i++) {
if (status.pla.wea[`wea_${i}`].stat === "acte") {
save_acte();
}
}
您可以使用一个数组,其中包含wea_*
的所有可能索引,并对其进行迭代,依次检查每个wea_*
条目。例如:
const status = {
pla: {
wea: {
wea_0: {
stat: "blah"
},
wea_1: {
stat: "blah"
},
wea_2: {
stat: "acte"
},
wea_3: {
stat: "blah"
}
}
}
};
function save_acte(i) {
console.log('saved acte ' + i);
}
[0,1,2,3].forEach(i => status.pla.wea['wea_' + i].stat === 'acte' ? save_acte(i) : '');
// or, if you're not using IE
[...Array(4).keys()].forEach(i => status.pla.wea['wea_' + i].stat === 'acte' ? save_acte(i) : '');