如何在JavaScript中重构重复的switch语句

时间:2019-07-15 12:54:28

标签: javascript jquery refactoring

我有以下switch语句。 但是这里有重复的代码,我想摆脱它。 请重构此代码。

var something;
switch(alphabet) {
  case "A":
     something.aa = true;
     something.bb = false;
     something.cc = false;
     break;
  case "B":
     something.aa = false;
     something.bb = true;
     something.cc = false;
     break;
  case "C":
     something.aa = false;
     something.bb = false;
     something.cc = true;
     break;
}

4 个答案:

答案 0 :(得分:2)

如何完全不使用switch语句?

var something = {
  aa: alphabet === "A",
  bb: alphabet === "B",
  cc: alphabet === "C"
}

答案 1 :(得分:0)

因此,在任何时间点,只有一种情况是正确的。请记住,您可以执行以下操作:

var something = {aa:false,bb:false,cc:false},
switch(alphabet) {
  case "A":
     something.aa = true;
     break;
  case "B":
     something.bb = true;
     break;
  case "C":
     something.cc = true;
     break;
}

希望有帮助。 :-)

答案 2 :(得分:0)

您可以将对象设为true的对象,例如

var targets = {
        A: 'aa',
        B: 'bb',
        C: 'bb',
    },
    something = { aa: false, bb: false, cc: false };

// usage
if (alphabet in targets) something[targets[alphabet]] = true;

答案 3 :(得分:0)

一种方法是使用键数组和一个循环,该循环将字母与键以及适用的逻辑进行比较。在您的示例中,它将是简单的includes()startsWith()

类似的东西:

const keys = ['aa','bb', 'cc'];
const lower = alphabet.toLowerCase();
keys.forEach(k => something[k] = k.includes(lower))