Switch Case To/Between

后端 未结 4 871
终归单人心
终归单人心 2021-01-03 12:56

Is there a way in Javascript to compare one integer with another through switch case structures without using if statements?

E.g.

switch(integer) {
         


        
相关标签:
4条回答
  • 2021-01-03 13:23

    You can do some math manipulations.

    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;
    }
    
    0 讨论(0)
  • 2021-01-03 13:27

    As stated in my comment, you can't do that. However, you could define an inRange function:

    function inRange(x, min, max) {
        return min <= x && x <= max;
    }
    

    and use it together with if - else if. That should make it quite easy to read:

    if(inRange(integer, 1, 10)) {
    
    }
    else if(inRange(integer, 11, 20)) {
    
    }
    
    //...
    
    0 讨论(0)
  • 2021-01-03 13:31

    Posting for "cool" syntax :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;
    }
    
    0 讨论(0)
  • 2021-01-03 13:32

    There is a way, yes. I'm pretty sure I'd use an if/else structure in my own code, but if you're keen to use a switch the following will work:

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

    Of course if you wanted to avoid having to code >= && <= on every case you could define your own isInRange(num,min,max) type function to return a boolean and then say:

    switch (true) {
       case isInRange(integer,1,10):
          // 1-10
          break;
       // etc
    }
    
    0 讨论(0)
提交回复
热议问题