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;
}
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;
}
正如我的評論所述,你不能那樣做。但是,你可以定義一個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)) {
}
//...
發帖: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;
}
爲什麼`o [i] =!0`比'o [i] = true`好?爲了冷靜? ;)每次創建一個像這樣的對象似乎都是一種浪費,但這樣使用`in`是我不得不承認的(儘管可能不是很高效)。 – 2011-12-16 01:52:14
你可以做一些數學操作。
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;
}
有一種方法,是的。我敢肯定,我會在我自己的代碼使用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
}
號好了,你可以有'開關(整數<10){情況也是一樣的:....} `(通過`switch`比較一個整數與另一個整數),但我想這沒有幫助。 – 2011-12-16 01:42:14
好的。我問,因爲讀取和編碼似乎比if(integer <= 10)等要容易得多。我曾經在某處看過這種語法,但我忘記了在哪裏以及爲了什麼。 – 2011-12-16 01:46:21