jquery Using ranges in switch cases?

javascript, switch-statement

Solution

you could try abusing the switch fall through behaviour

var x = 5;
switch (x) {
    case  1: case 2: case 3: case 4: ...
        break;
    case 13: case 14: case 15: ...
        break;
    ...
}

which is very verbose

or you could try this

function checkRange(x, n, m) {
    if (x >= n && x <= m) { return x; }
    else { return !x; }
}

var x = 5;
switch (x) {
    case checkRange(x, 1, 12):
        //do something
        break;
    case checkRange(x, 13, 19):
    ...
}

this gets you the behaviour you would like. The reason i return `!x` in the else of checkRange is to prevent the problem of when you pass `undefined` into the switch statement. if your function returns `undefined` (as jdk's example does) and you pass `undefined` into the switch, then the first case will be executed. `!x` is guaranteed to not equal `x` under any test of equality, which is how the switch statement chooses which case to execute.

Problem

Switch cases are usually like ``` Monday: Tuesday: Wednesday: etc. ``` I would like to use ranges. ``` from 1-12: from 13-19: from 20-21: from 22-30: ``` Is it possible? I'm using javascript/jquery by the way.

Original source

Related problems