Javascript 使用多个选项编写Jquery If语句的较短方法;如果;

Javascript 使用多个选项编写Jquery If语句的较短方法;如果;,javascript,jquery,if-statement,Javascript,Jquery,If Statement,使用Jquery是否有一种更简单/更短的方法来编写这样的if语句: if(number === "0" ) { degrees = "-160"; } if(number === "1" ) { degrees = "-158"; } if(number === "2" ) { degrees = "-156"; } if(number === "3" ) { degrees = "-154"; } if(number === "4" ) { degrees = "-152"; } if(num

使用Jquery是否有一种更简单/更短的方法来编写这样的if语句:

if(number === "0" ) { degrees = "-160"; }
if(number === "1" ) { degrees = "-158"; }
if(number === "2" ) { degrees = "-156"; }
if(number === "3" ) { degrees = "-154"; }
if(number === "4" ) { degrees = "-152"; }
if(number === "5" ) { degrees = "-150"; }
if(number === "6" ) { degrees = "-148"; }
if(number === "7" ) { degrees = "-146"; }
if(number === "8" ) { degrees = "-144"; }
if(number === "9" ) { degrees = "-142"; }
if(number === "10") { degrees = "-140"; }
 var myObject = {'0':'-160', '1':'-158', '2':'-156'};

 var degrees = myObject[number];
number变量只是一个输入字段,用户在其中输入0-10之间的数字


谢谢大家!

嗯。。。使用阵列快速简便

degrees = [-160, -158, ..., -140][number];
或者,为了避免将值硬编码到代码中,尝试创建一个基于公式生成值的函数

degress = -160 + 2 * number;

创建一个数组,而不是
if
s

var degrees = ["-160","-158","-156","-154","-152","-150","-148","-146","-144","-142","-140"];
然后,您可以简单地用

console.log(degrees[number]);

switch语句可能适合您

switch(number){
    case 1:
       doThis();
       break;
    case 2:
       doThat();
       break;
}
使用
swich

switch(number ) { 
case "0":degrees = "-160"; 
       break;
case "1" : degrees = "-158"; 
       break;
...
...

case "10" : degrees = "-140";
     break;
}
试一试


您可以使用下面创建的映射,并使用
number
变量检索值

var map = new Object();
map["0"]="-160";
map["1"]="-158"; 
map["2"]="-156"; 
map["3"]="-154"; 
map["4"]="-152"; 
map["5"]="-150"; 
map["6"]="-148"; 
map["7"]="-146"; 
map["8"]="-144"; 
map["9"]="-142";
map["10"]="-140";
和检索值,如

degrees = map[number];

对我来说,我喜欢这样使用:

var obj = {
   0 : '-160',
   1 : '-158'
}

if ( $.inArray(number, [1,2,3,...10] ) !== -1 ) {
   degree = obj[number];
}

对于您的特定问题,您只需编写一个如下所示的函数

var getDegrees = function(number){
   return -160 + ((+number)*2);
}
叫它贝娄

getDegrees("1") // will return -158
getDegrees("10") // will return -140
getDegrees(10) // will also return -158

为什么不使用开关箱挡块

switch (number) {
    case "0":
        degrees = "-160";
    case "1":
        degrees = "-158";
        .
        .
        .
    default:
    }
但是,您可以将数字转换为int。然后只需编写以下命令:

degrees = "-" + 160 - number * 2;

改为使用对象,如下所示:

if(number === "0" ) { degrees = "-160"; }
if(number === "1" ) { degrees = "-158"; }
if(number === "2" ) { degrees = "-156"; }
if(number === "3" ) { degrees = "-154"; }
if(number === "4" ) { degrees = "-152"; }
if(number === "5" ) { degrees = "-150"; }
if(number === "6" ) { degrees = "-148"; }
if(number === "7" ) { degrees = "-146"; }
if(number === "8" ) { degrees = "-144"; }
if(number === "9" ) { degrees = "-142"; }
if(number === "10") { degrees = "-140"; }
 var myObject = {'0':'-160', '1':'-158', '2':'-156'};

 var degrees = myObject[number];

尝试创建具有属性
0
-
10
的对象,将
度设置为对象内属性的值

var obj={
"0": "-160",
"1": "-158",
"2": "-156",
"3": "-154",
"4": "-152",
"5": "-150",
"6": "-148",
"7": "-146",
"8": "-144",
"9": "-142",
"10": "-140"
};
//集伪随机数
变量编号=1+数学楼层(数学随机()*10);
//设置“度”
变量度=对象[数量];
document.body.textContent=度这个怎么样

degrees = ( -160 + 2 * number ).toString();
var number=“3”;
变量度数=(-160+2*number).toString();

控制台日志(编号、度数)所以,我有几种方法可以回答这个问题。它并不是很短,但您的意图可能更为明显和直接,使用
开关
,而不是
,如果
s:

switch (number)
{
    case "0":
        degrees = "-160";
        break;
    case "1":
        degrees = "-158";
        break;
    ...
}
但是,对于这种类型的东西,查找表可能更清晰和简洁:

var degreesLookupTable = {
    "0": "-160",
    "1": "-158",
    "2": "-156",
    "3": "-154",
    "4": "-152",
    "5": "-150",
    "6": "-148",
    "7": "-146",
    "8": "-144",
    "9": "-142",
    "10": "-140"
};

if (number in degreesLookupTable)
    degrees = degreesLookupTable[number]
else
    throw "Number not found in degree map!"
有关详细信息,请参见查阅表格部分


第三,
数字
之间似乎存在直接的数学关系。也许只需编写一个函数,直接根据
number
的值计算

如果它是一个有限列表,我建议将其限制在这些选择范围内。例如:
0n+1
转到您最喜欢的搜索引擎,搜索查找表。虽然比if语句长。
switch..case
很慢。我必须说,有很多冗余,这通常是件坏事。您不需要使用+运算符将其转换为数字。JavaScript会自动执行“2”*2==4。@BhojendraNepal谢谢您的回复。我不知道。而“2”+2等于“22”。所以这就是我不想冒险的原因之一。非常感谢!这很好用。我稍微修改了一下以适应我的代码,但是核心工作得很好。@Mritunjay没有风险。每件事都有明确的规定,如有可能,双方都将被铸造成一个数字。