将重复"if"转换为"loop" (javascript)



我有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();
}

请帮我把它改为loopfor

访问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) : '');

最新更新