Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法在switch语句中转换if语句?_Javascript_If Statement_Switch Statement - Fatal编程技术网

Javascript 有没有办法在switch语句中转换if语句?

Javascript 有没有办法在switch语句中转换if语句?,javascript,if-statement,switch-statement,Javascript,If Statement,Switch Statement,我有这个密码 if (header.classList.contains("capricorn")) { //star sign description para.innerHTML = starSign.Capricorn; } else if (header.classList.contains("aquarius")) { para.innerHTML = starSign.Aquarius; } else if (h

我有这个密码

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语句中转换它,这可能吗?

根据
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];
}
我假设星号是一个只有12个键的文本集合。如果不是这样的话,请考虑从中分离出一个数组。



一般来说,当你有一系列的if-else-if-else-if检查一遍又一遍地做着本质上相同的事情时,考虑一下为同样的目的使用不同的函数。这不仅使您有机会简化代码(如本例中所示),而且还隔离了业务逻辑决策,使您的代码更具可读性和可测试性。

是的,谢谢。这就是我想我可以做的,我现在就试试。非常感谢,非常有帮助!这就是我想要做的,让我的代码更简单,因为我有很多If语句