切换语句的范围不起作用

时间:2013-11-30 09:30:22

标签: javascript switch-statement

我在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));

我总是得到一个空字符串。

3 个答案:

答案 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 中切换案例。在比较之前,他们强制在switchcase字符串中收到他们收到的任何输入。因此,您的value.toString()与各种情况下的“true”和“false”字符串进行比较,在每种情况下返回false

使用ifElse阶梯是解决此问题的最佳方法,并参考任何其他答案,以获得可能的解决方法,该方法依赖于返回value.toString()或切换"true"而不是{ {1}}。