Fügen Sie Ihre Werte in ein Array ein und überprüfen Sie, ob sich Ihr Element im Array befindet:
if ([1, 2, 3, 4].includes(test.type)) {
// Do something
}
Wenn ein von Ihnen unterstützter Browser nicht über die Array#includesMethode verfügt, können Sie diese Polyfüllung verwenden .
Kurze Erklärung der ~Tilde-Verknüpfung:
Update: Da wir jetzt die includesMethode haben, macht es keinen Sinn ~mehr , den Hack zu verwenden. Bewahren Sie dies hier für Personen auf, die wissen möchten, wie es funktioniert, und / oder die im Code anderer Benutzer darauf gestoßen sind.
Anstatt zu überprüfen, ob das Ergebnis von indexOfist >= 0, gibt es eine nette kleine Verknüpfung:
if ( ~[1, 2, 3, 4].indexOf(test.type) ) {
// Do something
}
Hier ist die Geige: http://jsfiddle.net/HYJvK/
Wie funktioniert das? Wenn ein Element im Array gefunden wird, wird indexOfsein Index zurückgegeben. Wenn der Artikel nicht gefunden wurde, wird er zurückgegeben -1. Ohne zu sehr ins Detail zu gehen, ~ist der ein bitweiser NOT-Operator , der 0nur für zurückgibt-1 .
Ich verwende gerne die ~Verknüpfung, da sie prägnanter ist als ein Vergleich des Rückgabewerts. Ich wünschte, JavaScript hätte eine in_arrayFunktion, die einen Booleschen Wert direkt zurückgibt (ähnlich wie PHP), aber das ist nur Wunschdenken ( Update: das tut es jetzt. Es heißt includes. Siehe oben). Beachten Sie, dass jQuery's inArray, während es die Methodensignatur von PHP teilt, tatsächlich die native indexOfFunktionalität nachahmt (was in verschiedenen Fällen nützlich ist, wenn der Index genau das ist, wonach Sie wirklich suchen).
Wichtiger Hinweis: Die Verwendung der Tilde-Verknüpfung scheint kontrovers diskutiert zu werden, da einige vehement der Ansicht sind, dass der Code nicht klar genug ist und unter allen Umständen vermieden werden sollte (siehe die Kommentare zu dieser Antwort). Wenn Sie ihre Meinung teilen, sollten Sie sich an die .indexOf(...) >= 0Lösung halten.
Eine etwas längere Erklärung:
Ganzzahlen in JavaScript sind signiert. Dies bedeutet, dass das Bit ganz links als Vorzeichenbit reserviert ist. ein Flag, das angibt, ob die Zahl positiv oder negativ ist, wobei a 1negativ ist.
Hier sind einige positive Beispielzahlen im 32-Bit-Binärformat:
1 : 00000000000000000000000000000001
2 : 00000000000000000000000000000010
3 : 00000000000000000000000000000011
15: 00000000000000000000000000001111
Hier sind die gleichen Zahlen, aber negativ:
-1 : 11111111111111111111111111111111
-2 : 11111111111111111111111111111110
-3 : 11111111111111111111111111111101
-15: 11111111111111111111111111110001
Warum so komische Kombinationen für die negativen Zahlen? Einfach. Eine negative Zahl ist einfach die Umkehrung der positiven Zahl + 1; Das Addieren der negativen Zahl zur positiven Zahl sollte immer ergeben 0.
Um dies zu verstehen, führen wir eine einfache binäre Arithmetik durch.
Hier ist , wie wir hinzufügen würde -1zu +1:
00000000000000000000000000000001 +1
+ 11111111111111111111111111111111 -1
-------------------------------------------
= 00000000000000000000000000000000 0
Und hier ist , wie wir hinzufügen würde -15zu +15:
00000000000000000000000000001111 +15
+ 11111111111111111111111111110001 -15
--------------------------------------------
= 00000000000000000000000000000000 0
Wie bekommen wir diese Ergebnisse? Wenn Sie regelmäßig hinzufügen, wie wir es in der Schule gelernt haben: Sie beginnen in der Spalte ganz rechts und addieren alle Zeilen. Wenn die Summe größer ist als die größte einstellige Zahl (die dezimal 9, aber binär ist 1), übertragen wir den Rest in die nächste Spalte.
Wie Sie feststellen werden, hat die Spalte ganz rechts, die nicht alle 0s ist, beim Hinzufügen einer negativen Zahl zu ihrer positiven Zahl immer zwei 1s, was zusammen ergibt 2. Die binäre Darstellung von zwei Wesen 10tragen wir 1in die nächste Spalte und setzen ein 0für das Ergebnis in die erste Spalte. Alle anderen Spalten auf der linken Seite haben nur eine Zeile mit einem 1, so dass sich die 1aus der vorherigen Spalte übertragenen Werte wieder summieren 2, was sich dann überträgt ... Dieser Vorgang wiederholt sich, bis wir zur Spalte ganz links gelangen, wo Das 1, was übertragen werden soll, kann nirgendwo hingehen, also läuft es über und geht verloren, und wir haben 0überall s übrig .
Dieses System heißt 2's Complement . Mehr dazu lesen Sie hier:
2's Komplementdarstellung für vorzeichenbehaftete Ganzzahlen .
Jetzt, da der Crash-Kurs im 2er-Komplement beendet ist, werden Sie feststellen, dass dies -1die einzige Zahl ist, deren binäre Darstellung 1überall ist.
Mit dem ~bitweisen NOT-Operator werden alle Bits in einer bestimmten Zahl invertiert. Der einzige Weg, um 0vom Invertieren aller Bits zurück zu kommen, besteht darin, mit 1's all across' zu beginnen.
Das alles war also eine langatmige Art zu sagen, ~ndie nur zurückkehren wird, 0wenn es so nist -1.
in?