我在javascript中使用一个开关案例来查找范围,但它不起作用。我做错了什么?
function mapPriceRange(value){
var range = '';
switch(value)
{
case (value >= 0 && value <= 25):
range = '0_25';
break;
case (value >= 25 && value <= 40):
range = '25_40';
break;
case (value >= 40 && value <= 60):
range = '40_60';
break;
case (value >= 60 && value <= 100):
range = '60_100';
break;
case (value >= 100 && value <= 150):
range = '100_150';
break;
case (value >= 150 && value <= 200):
range = '150_200';
break;
case (value >= 200 && value <= 300):
range = '200_300';
break;
case (value >= 300 && value <= 500):
range = '300_500';
break;
case (value >= 500 && value <= 1000):
range = '500_1000';
}
return range;
}
console.log(mapPriceRange(500));
我总是得到一个空字符串。
答案 0 :(得分:2)
只需将switch(value)
替换为switch(true)
即可。请参阅jsFiddle。
答案 1 :(得分:1)
使用下面的代码
function checkRange(x, n, m) {
if (x >= n && x <= m) { return x; }
else { return !x; }
}
var x = 5;
function mapPriceRange(value){
var range = '';
switch(value)
{
case checkRange(x, 0, 25):
range = '0_25';
break;
case checkRange(x, 25, 40):
range = '25_40';
break;
case checkRange(x, 40, 60):
range = '40_60';
break;
case checkRange(x, 60, 100):
range = '60_100';
break;
case checkRange(x, 100, 150):
range = '100_150';
break;
case checkRange(x, 150, 200):
range = '150_200';
break;
case checkRange(x, 200, 300):
range = '200_300';
break;
case checkRange(x, 300, 500):
range = '300_500';
break;
case checkRange(x, 500, 1000):
range = '500_1000';
}
return range;
}
console.log(mapPriceRange(500));
答案 2 :(得分:0)
使用字符串在Javascript 中切换案例。在比较之前,他们强制在switch
或case
字符串中收到他们收到的任何输入。因此,您的value.toString()
与各种情况下的“true”和“false”字符串进行比较,在每种情况下返回false
。
使用ifElse
阶梯是解决此问题的最佳方法,并参考任何其他答案,以获得可能的解决方法,该方法依赖于返回value.toString()
或切换"true"
而不是{ {1}}。