切换到/之间的案例

时间:2011-12-16 01:39:40

标签: javascript switch-statement

Javascript中是否有一种方法可以通过switch case结构比较一个整数与另一个整数而不使用if语句?

E.g。

switch(integer) {
    case 1 to 10:
        break;
    case 11 to 20:
        break;
    case 21 to 30:
        break;
}

4 个答案:

答案 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;
}