Ich benötige mehrere Fälle in der switch-Anweisung in JavaScript. So etwas wie:
switch (varName)
{
case "afshin", "saeed", "larry":
alert('Hey');
break;
default:
alert('Default case');
break;
}
Wie kann ich das machen? Wenn es in JavaScript keine Möglichkeit gibt, so etwas zu tun, möchte ich eine alternative Lösung kennen, die auch dem DRY-Konzept folgt .
javascript
switch-statement
Afshin Mehrabani
quelle
quelle
Antworten:
Verwenden Sie die Fall-Through-Funktion der
switch
Anweisung. Ein übereinstimmender Fall wird ausgeführt, bis einbreak
(oder das Ende derswitch
Anweisung) gefunden wird. Sie können ihn also wie folgt schreiben:quelle
switch('10') { case 1, '10': console.log('ok') }
Druckeok
switch(1)
. Das Etikett hier ist nur ein Kommaausdruck.Dies funktioniert in normalem JavaScript
Prost.
quelle
Hier ist ein anderer Ansatz, bei dem die
switch
Aussage insgesamt vermieden wird :quelle
switch ... case
. Es ist zu leicht, einebreak
Aussage zu vergessen , und wenn Sie absichtlich durchfallen, können diese vergessenenbreak
Aussagen sehr schwer zu erkennen sein. Diese Methode zur Methodensuche bietet auch viele großartige Funktionen, dieswitch ... case
fehlen, wie z. B. die dynamische Erweiterbarkeit oder die Möglichkeit, das Objekt vollständig zu ersetzen, um die Modusumschaltung durchzuführen. Es ist auch einfacher, sauber organisiert zu bleiben, und kann zu besser wartbarem Code führen. Siehe ericleads.com/2012/12/switch-case-considered-harmful//fallthrough
statt ,break
wenn ich das absichtlich unterlassenbreak
. Das hilft zu erkennen, wann es ein Fehler ist und wann es beabsichtigt ist.In Javascript müssen wir
different case without break inbetween
wie folgt definieren, um mehrere Fälle in einem Switch zuzuweisen :Bitte sehen Sie das Beispiel, klicken Sie auf den Link
quelle
Wenn Sie ES6 verwenden, können Sie Folgendes tun:
Für frühere Versionen von JavaScript können Sie Folgendes tun:
Beachten Sie, dass dies in älteren IE-Browsern nicht funktioniert, Sie die Dinge jedoch recht einfach reparieren können. Weitere Informationen finden Sie in der Frage , ob die Zeichenfolge in der Liste in Javascript enthalten ist.
quelle
includes
Wort? Treffen Sie Ihre Wahl.Im Knoten scheint es Ihnen erlaubt zu sein, dies zu tun:
Dies führt in einigen Fällen zu einem viel kompakteren Code.
quelle
Wenn Sie Stefanos Antwort hinzufügen und klarstellen, können Sie Ausdrücke verwenden, um die Werte für die Bedingungen im Schalter dinamisch festzulegen, z.
In Ihrem Problem könnten Sie also Folgendes tun:
obwohl nicht so viel trocken ..
quelle
varName
den case-Ausdruck zu ändern. Erwarten Sie, dass varName zwischengespeichert wird.Sie können die ‚Verwendung in ‘ Operator ...
verlässt sich auf das Objekt / Hash - Aufruf ...
so seine so schnell wie Javascript sein kann ...
Viel Spaß, ZEE
quelle
Ich benutze so:
quelle
g
Flagge nicht verwenden, da Sie die regulären Ausdrücke nur einmal verwenden und wegwerfen. Wenn Sie sie außerhalb der Funktiong
belassen, würde Ihnen das Flag schaden , wenn Sie versuchen, bei nachfolgenden.test(
s von einem Nicht-0-Index abzugleichen. Ich habe auch einen Tippfehler behoben, bei dem der Schalterfallsensor
variabel und nichttrue
konstant war, um boolesche Ausdrücke abzugleichen. Siehe die Bearbeitung.case /officedocument/.test(type) && /presentation/.test(type): iconClass = "far fa-file-powerpoint red"; break;
Es hängt davon ab, ob. Switch wertet einmal und nur einmal aus. Bei einem Match werden alle nachfolgenden Fallaussagen bis zum "Break" ausgelöst, unabhängig davon, was der Fall sagt.
quelle
Ich mag dies für Klarheit und DRY-Syntax.
quelle
Ich kann sehen, dass es hier viele gute Antworten gibt, aber was passiert, wenn wir mehr als 10 Fälle überprüfen müssen? Hier ist mein eigener Ansatz:
quelle
if (accessDenied.includes(varName)) return 'Access Denied!'; return 'Access Allowed.'
mehr als genug.Das Problem bei den obigen Ansätzen besteht darin, dass Sie die verschiedenen
case
s jedes Mal wiederholen müssen, wenn Sie die Funktion aufrufen, die die hatswitch
. Eine robustere Lösung besteht darin, eine Karte oder ein Wörterbuch zu haben .Hier ein Beispiel
quelle
Du kannst das:
oder nur eine einzige Codezeile:
eine kleine Verbesserung gegenüber ErikEs Antwort
quelle
Für jeden, der mit einem ähnlichen Problem hierher kam, das ich nach wochenlangem Codieren und einem Burnout hatte, war meine Situation ungefähr so:
Immer der
default
Fall eingegeben. Wenn Sie auf ein ähnliches Problem mit Switch-Anweisungen in mehreren Fällen stoßen, suchen Sie nach:Ich hoffe, das hilft jemandem. Ich habe mir die Haare ausgezogen, bevor ich mich daran erinnerte, das Schaltergehäuse genauso zu verwenden, wie ich es in meinen Redux-Reduzierern verwende.
quelle
Eine der möglichen Lösungen ist:
quelle
Für mich ist das der einfachste Weg:
quelle
Eine andere Möglichkeit, mehrere Fälle in der switch-Anweisung innerhalb einer Funktion auszuführen
quelle
Sie könnten es so schreiben:
quelle
quelle
switch
Aussage nicht funktionieren. Es ist nurcase "1":
nichtcase (num = "1"):
.document.getElementById("result").innerHTML = ....
außerhalb des Schalters und addieren das Tageswertergebnis am Ende?num
aber es funktioniert immer noch, weil dasswitch
bereits ausgewertet wurde und die Zuweisung den Wert ergibt. Dies ist Programmierung durch Mutation / maschinelles Lernen vom Feinsten.Schalten Sie einfach den Schalterzustand vor
quelle
(expression)
in Klammern, und der Rückgabewert muss die Eingabe sein. Siehe meine Antwortswitch(true) { case (var1 === 0 && var2 === true): {} }