jquery Mit Bereiche in Schalter Fällen?
-
06-07-2019 - |
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.
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.)