Mettez vos valeurs dans un tableau et vérifiez si votre élément est dans le tableau:
if ([1, 2, 3, 4].includes(test.type)) {
// Do something
}
Si un navigateur que vous prenez en charge ne dispose pas de la Array#includes
méthode, vous pouvez utiliser ce polyfill .
Brève explication du ~
raccourci tilde:
Mise à jour: Puisque nous avons maintenant la includes
méthode, il ne ~
sert plus à rien d'utiliser le hack. Il suffit de garder ceci ici pour les personnes qui souhaitent savoir comment cela fonctionne et / ou qui l'ont rencontré dans le code d'un autre.
Au lieu de vérifier si le résultat de indexOf
est >= 0
, il y a un joli petit raccourci:
if ( ~[1, 2, 3, 4].indexOf(test.type) ) {
// Do something
}
Voici le violon: http://jsfiddle.net/HYJvK/
Comment cela marche-t-il? Si un élément est trouvé dans le tableau, indexOf
renvoie son index. Si l'article n'a pas été trouvé, il reviendra -1
. Sans entrer dans les détails, le ~
est un opérateur NOT au niveau du bit , qui ne retournera 0
que pour -1
.
J'aime utiliser le ~
raccourci, car il est plus succinct que de faire une comparaison sur la valeur de retour. Je souhaite que JavaScript ait une in_array
fonction qui renvoie directement un booléen (similaire à PHP), mais c'est juste un vœu pieux ( Mise à jour: c'est maintenant le cas. Il est appelé includes
. Voir ci-dessus). Notez que jQuery inArray
, tout en partageant la signature de méthode PHP, imite en fait la indexOf
fonctionnalité native (ce qui est utile dans différents cas, si l'index est ce que vous recherchez vraiment).
Remarque importante: l' utilisation du raccourci tilde semble être controversée, car certains pensent avec véhémence que le code n'est pas assez clair et doit être évité à tout prix (voir les commentaires sur cette réponse). Si vous partagez leur sentiment, vous devez vous en tenir à la .indexOf(...) >= 0
solution.
Une explication un peu plus longue:
Les entiers en JavaScript sont signés, ce qui signifie que le bit le plus à gauche est réservé comme bit de signe; un drapeau pour indiquer si le nombre est positif ou négatif, avec un 1
négatif.
Voici quelques exemples de nombres positifs au format binaire 32 bits:
1 : 00000000000000000000000000000001
2 : 00000000000000000000000000000010
3 : 00000000000000000000000000000011
15: 00000000000000000000000000001111
Voici maintenant ces mêmes chiffres, mais négatifs:
-1 : 11111111111111111111111111111111
-2 : 11111111111111111111111111111110
-3 : 11111111111111111111111111111101
-15: 11111111111111111111111111110001
Pourquoi des combinaisons aussi étranges pour les nombres négatifs? Facile. Un nombre négatif est simplement l'inverse du nombre positif + 1; l'ajout du nombre négatif au nombre positif doit toujours produire 0
.
Pour comprendre cela, faisons une simple arithmétique binaire.
Voici comment nous ajouterions -1
à +1
:
00000000000000000000000000000001 +1
+ 11111111111111111111111111111111 -1
-------------------------------------------
= 00000000000000000000000000000000 0
Et voici comment nous ajouterions -15
à +15
:
00000000000000000000000000001111 +15
+ 11111111111111111111111111110001 -15
--------------------------------------------
= 00000000000000000000000000000000 0
Comment obtenons-nous ces résultats? En faisant des ajouts réguliers, comme on nous a enseigné à l'école: vous commencez à la colonne la plus à droite et vous additionnez toutes les lignes. Si la somme est supérieure au plus grand nombre à un chiffre (qui en décimal est 9
, mais en binaire est 1
), nous reportons le reste à la colonne suivante.
Maintenant, comme vous le remarquerez, lorsque vous ajoutez un nombre négatif à son nombre positif, la colonne la plus à droite qui n'est pas tout 0
s aura toujours deux 1
s, ce qui, une fois additionné, donnera 2
. La représentation binaire de deux étant 10
, nous portons le 1
à la colonne suivante, et mettons un 0
pour le résultat dans la première colonne. Toutes les autres colonnes à gauche n'ont qu'une seule ligne avec un 1
, donc le report 1
de la colonne précédente s'additionnera à nouveau 2
, qui sera ensuite reporté ... Ce processus se répète jusqu'à ce que nous arrivions à la colonne la plus à gauche, où le 1
à reporter n'a nulle part où aller, donc il déborde et se perd, et nous nous retrouvons avec des 0
s partout.
Ce système est appelé Complément 2 . Vous pouvez en savoir plus ici:
Représentation complémentaire de 2 pour les entiers signés .
Maintenant que le cours intensif du complément de 2 est terminé, vous remarquerez que -1
c'est le seul nombre dont la représentation binaire est 1
de partout.
En utilisant l' ~
opérateur NOT au niveau du bit, tous les bits d'un nombre donné sont inversés. La seule façon de revenir en 0
arrière de l'inversion de tous les bits est de commencer avec des 1
«all across».
Donc, tout cela était une longue façon de dire qui ~n
ne reviendra que 0
si n
c'est le cas -1
.
in
?