Frage

Schalter Fälle sind in der Regel wie

Monday: 
Tuesday: 
Wednesday: 
etc. 

Ich möchte Bereiche verwenden.

from 1-12: 
from 13-19:
from 20-21:
from 22-30:

Ist es möglich? Ich verwende Javascript / jquery durch die Art und Weise.

War es hilfreich?

Lösung

Sie könnten versuchen, den Schalter fallen durch Verhalten zu missbrauchen

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

das ist sehr ausführlich

oder Sie könnten versuchen, diese

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):
    ...
}

Diese bekommt man das Verhalten Sie möchten. Der Grund, warum ich !x in der sonst von Checkrange zurückzukehren ist das Problem zu vermeiden, wenn Sie undefined in die Switch-Anweisung übergeben. wenn Ihre Funktion undefined zurückgibt (wie jdk dem Beispiel der Fall ist) und Sie undefined in den Schalter passieren, dann wird der erste Fall wird ausgeführt. !x ist garantiert nicht gleich x unter jedem Test der Gleichheit, das ist, wie die Switch-Anweisung wählt, welcher Fall auszuführen.

Andere Tipps

Späte an die Partei, sondern auf auf die gleiche Frage nach einer Antwort suchen, stieß ich auf diesen Thread. Derzeit verwende ich eigentlich einen Schalter, sondern eine andere Art und Weise. Zum Beispiel:

switch(true) {
    case (x >= 1 && x <= 12):
        //do some stuff
        break;
    case (x >= 13 && x <= 19):
        //do some other stuff                
        break;
    default:
        //do default stuff
        break;
}

Ich finde das viel einfacher als ein Bündel von IF-Anweisungen zu lesen.

Sie können interessanten kludges machen. Zum Beispiel kann eine Zahl gegen eine Reihe zu testen, einen JavaScript-Schalter verwenden, können Sie eine benutzerdefinierte Funktion geschrieben werden. Grundsätzlich hat testet die Funktion einen geben n-Wert und senden Sie es, wenn es in Reichweite ist. Ansonsten undefined oder einen anderen Dummy-Wert zurückgegeben.

<script>

// Custom Checking Function..
function inRangeInclusive(start, end, value) {
    if (value <= end && value >= start)
        return value; // return given value
    return undefined; 
}

// CODE TO TEST FUNCTION
var num = 3;
switch(num) {
case undefined:
    //do something with this 'special' value returned by the inRangeInclusive(..) fn
    break;
case inRangeInclusive(1, 10, num):
    alert('in range');
    break;
default:
    alert('not in range');
    break;
}

</script>

Dies funktioniert in Google Chrome. Ich habe keine anderen Browser testen.

Nein, müssen Sie eine if / else verwenden, wenn Serie, dies zu tun. JavaScript ist nicht diese Phantasie. (Nicht viele Sprachen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top