我有此代码
if (header.classList.contains("capricorn")) {
//star sign description
para.innerHTML = starSign.Capricorn;
} else if (header.classList.contains("aquarius")) {
para.innerHTML = starSign.Aquarius;
} else if (header.classList.contains("pisces")) {
para.innerHTML = starSign.Pisces;
我想在switch语句中打开它,这可能吗?
答案 0 :(得分:1)
根据starSign
对象的属性,考虑对检查进行参数设置:
function chooseSign(classList, signs) {
return signs.find(s => classList.contains(s.toLowerCase());
}
...并相应地使用它:
const sign = chooseSign(header.classList, Object.keys(starSign));
if (sign) {
para.innerHTML = starSign[sign];
}
我假设starSign
是只有12个键的文本集合。如果不是这种情况,请考虑从中分离出一个单独的阵列。
通常,当您有一系列if-else if-else if反复检查本质上相同的东西时,请考虑将单独的功能用于相同的目的。不仅使您有机会简化代码(如本例中所示),而且还隔离了业务逻辑决策,使您的代码更具可读性和可测试性。