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#includesméthode, vous pouvez utiliser ce polyfill .
Brève explication du ~raccourci tilde:
Mise à jour: Puisque nous avons maintenant la includesmé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 indexOfest >= 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, indexOfrenvoie 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 0que 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_arrayfonction 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 indexOffonctionnalité 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(...) >= 0solution.
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 1né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 0s aura toujours deux 1s, 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 0pour 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 1de 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 0s 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 -1c'est le seul nombre dont la représentation binaire est 1de 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 0arriè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 ~nne reviendra que 0si nc'est le cas -1.
in?