2011-12-16 84 views
2

Javascript中有一種方法可以通過switch case結構比較一個整數與另一個整數而不使用if語句嗎?Switch Case to/Between

例如

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

號好了,你可以有'開關(整數<10){情況也是一樣的:....} `(通過`switch`比較一個整數與另一個整數),但我想這沒有幫助。 – 2011-12-16 01:42:14

+0

好的。我問,因爲讀取和編碼似乎比if(integer <= 10)等要容易得多。我曾經在某處看過這種語法,但我忘記了在哪裏以及爲了什麼。 – 2011-12-16 01:46:21

回答

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)) { 

} 

//... 
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; 
} 
+1

爲什麼`o [i] =!0`比'o [i] = true`好?爲了冷靜? ;)每次創建一個像這樣的對象似乎都是一種浪費,但這樣使用`in`是我不得不承認的(儘管可能不是很高效)。 – 2011-12-16 01:52:14

4

你可以做一些數學操作。

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

有一種方法,是的。我敢肯定,我會在我自己的代碼使用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 
}