Javascript中是否有一种方法可以通过switch case结构比较一个整数与另一个整数而不使用if语句?
E.g。
switch(integer) {
case 1 to 10:
break;
case 11 to 20:
break;
case 21 to 30:
break;
}
答案 0 :(得分:5)
你可以做一些数学操作。
switch(Math.ceil(integer/10)) {
case 1: // Integer is between 1-10
break;
case 2: // Integer is between 11-20
break;
case 3: // Integer is between 21-30
break;
}
答案 1 :(得分:3)
正如我的评论所述,你不能这样做。但是,您可以定义inRange
函数:
function inRange(x, min, max) {
return min <= x && x <= max;
}
并与if - else if
一起使用。这应该很容易阅读:
if(inRange(integer, 1, 10)) {
}
else if(inRange(integer, 11, 20)) {
}
//...
答案 2 :(得分:3)
有一种方法,是的。我很确定我会在自己的代码中使用if / else结构,但是如果你热衷于使用一个开关,则以下内容将起作用:
switch(true) {
case integer >= 1 && integer <= 10:
// 1-10
break;
case integer >= 11 && integer <= 20:
// 11-20
break;
case integer >= 21 && integer <= 30:
// 21-30
break;
}
当然,如果你想避免在每个案例中编写>= && <=
代码,你可以定义自己的isInRange(num,min,max)
类型函数来返回一个布尔值,然后说:
switch (true) {
case isInRange(integer,1,10):
// 1-10
break;
// etc
}
答案 3 :(得分:0)
发布“酷”语法:P
if( integer in range(0, 10 ) ) {
}
else if ( integer in range( 11, 20 ) ) {
}
else if ( integer in range( 21, 30 ) ) {
}
function range( min, max ){
var o = {}, i ;
for( i = min; i <= max; ++i ) {
o[i] = !0;
}
return o;
}