Javascript 不工作范围的Switch语句

Javascript 不工作范围的Switch语句,javascript,switch-statement,Javascript,Switch Statement,我使用javascript中的开关盒来查找范围,但它不起作用。我做错什么了吗 function mapPriceRange(value){ var range = ''; switch(value) { case (value >= 0 && value <= 25): range = '0_25'; break; case (value >= 25 &

我使用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));
函数映射价格范围(值){
var范围=“”;
开关(值)
{
案例(值>=0&&value=25&&value=40&&value=60&&value=100&&value=150&&value=200&&value=300&&value=500&&value使用以下代码

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));
功能检查范围(x,n,m){

如果(x>=n&&x只需将
switch(value)
替换为
switch(true)
,它应该可以工作。请参阅。

仅使用字符串在Javascript中切换大小写。它们会在比较之前将
开关中或
大小写中收到的任何输入强制为字符串。因此,您的
值.toString()
与各种情况下的“true”和“false”字符串进行比较,每种情况下都返回
false


使用
ifElse
梯形图是解决此问题的最佳方法,并参考任何其他答案以了解可能的解决方法,该方法依赖于返回
value.toString()
或切换
“true”
而不是

如果您的范围重叠,您需要使用if-elseIt。根据此逻辑值,200将落入[150200],但它也在[200300]范围内。是的,谢谢,我将使用
if-else
并修复我的问题ranges@ntechi检查我的答案