在Javascript中,是否有一种方法可以通过switch case结构比较一个整数与另一个整数,而不使用if语句?
例如:
switch(integer) {
case 1 to 10:
break;
case 11 to 20:
break;
case 21 to 30:
break;
}
在Javascript中,是否有一种方法可以通过switch case结构比较一个整数与另一个整数,而不使用if语句?
例如:
switch(integer) {
case 1 to 10:
break;
case 11 to 20:
break;
case 21 to 30:
break;
}
您能进行一些数学计算。
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,以下内容也可以正常工作:
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
}
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
这种方式是很有创意的,我必须承认(虽然可能不太高效)。 - Felix Kling:P
- Šime Vidas
switch(integer < 10) { case true:....}
(通过switch
比较整数与另一个整数),但我想这并没有什么帮助。 - Felix Kling