改进多个If语句的语法?

时间:2012-08-02 02:00:16

标签: jquery loops syntax if-statement

有没有办法让这个更漂亮;

if ($("#Input").text === "A") { sOutput = "a"; lColor = "red"; }
if ($("#Input").text === "B") { sOutput = "b"; lColor = "orange"; }
if ($("#Input").text === "C") { sOutput = "c"; lColor = "yellow"; }
if ($("#Input").text === "D") { sOutput = "d"; lColor = "green"; }
if ($("#Input").text === "E") { sOutput = "e"; lColor = "blue"; }
if ($("#Input").text === "F") { sOutput = "f"; lColor = "violet"; }
...

真正的代码更广泛,&&和||不同变量之间。但是除了我正在寻找的'letter(s)'以及我设置的变量之外,每一行都遵循相同的语法。我有很多ifs,这对我来说只是一种浪费。

*代码是虚拟代码,用于说明我的观点。

修改

虚拟代码没有说明我的观点,所以这里是真实的样本;

    if ($(".Fig_Main").hasClass("Active")) {
        sect_1 =  (($(".Fig_A").hasClass("Active")) && ($(".Fig_1").hasClass("Active"))) ? "Slide_A1"
              : (($(".Fig_A").hasClass("Active")) && ($(".Fig_B").hasClass("Active"))) ? "Slide_AB"
              : (($(".Fig_1").hasClass("Active")) && ($(".Fig_B").hasClass("Active"))) ? "Slide_1B"
              : (($(".Fig_1").hasClass("Active")) && ($(".Fig_3").hasClass("Active"))) ? "Slide_13"
              ...

我有这个块(这是几行更长)重复几次,每次不同的sect_#和结果设置值(Slide_XY)。

非常感谢所有当前的建议。坚持下去。

4 个答案:

答案 0 :(得分:7)

你可以这样做:

var dic = {
  "a": "red",
  "b": "orange",
  "c": "yellow",
  "d": "green",
  "e": "blue",
  "f": "violet"
};

sOutput = $("#Input").text().toLowerCase();
lColor = dic[sOutput];

答案 1 :(得分:2)

您可以使用对象文字。

//extend the object as needed.
var obj = {
    'A': { sOutput:'a', lColor: 'red' },
    'B': { sOutput:'b', lColor: 'orange' },
}

var x = 'B';

console.log( obj[x] );

编辑:

您甚至可以进一步测试以确定是否定义了'x'变量的值:

var x = 'Z';

if( !(x in obj) ){
     //do stuff if Z isn't defined
}

答案 2 :(得分:0)

switch语句是可读的。您可以尝试任何其他奇特的方式,但对我来说,可读性是优先级1。

switch ($("#Input").text){
    case "A": 
        sOutput = "a"; 
        lColor = "red";
        break;
    case "B":
        sOutput = "b"; 
        lColor = "orange"; 
        break;
    case "C": 
       sOutput = "c"; 
       lColor = "yellow";
       break;
}

答案 3 :(得分:0)

我决定重新设计我的整个逻辑,并且我开发了更好的东西。

感谢所有人的帮助!