有没有办法让这个更漂亮;
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)。
非常感谢所有当前的建议。坚持下去。
答案 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)
我决定重新设计我的整个逻辑,并且我开发了更好的东西。
感谢所有人的帮助!