【问题标题】:is there a way to turn if statement in a switch statement? [duplicate]有没有办法在 switch 语句中转换 if 语句? [复制]
【发布时间】:2021-01-25 15:14:00
【问题描述】:

我有这个代码

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语句,可以吗?

【问题讨论】:

  • 是的,谢谢。这就是我认为我可以做的,我现在就试试

标签: javascript if-statement switch-statement


【解决方案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 检查一遍又一遍地执行基本相同的事情时,请考虑为相同的目的使用单独的函数。这不仅使您有机会简化代码(如本例所示),而且还隔离了业务逻辑决策,使您的代码更具可读性和可测试性。

【讨论】:

  • 非常感谢,非常有帮助!这就是我想要做的,让我的代码更简单,因为我有很多 If 语句
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多