Y a-t-il un meilleur moyen d'écrire le suivant conditionnel en JavaScript? Je déteste avoir tous ces ours logiques enfilés ensemble. Je me demande s'il y a une sorte de raccourci. P> merci! P> p>
7 Réponses :
Nope, c'est le sténographie.
comme alternative, vous pouvez faire un commutateur qui est plus facile à gérer si Vous avez besoin de nombreuses valeurs possibles, mais votre version est en fait plus courte de toute façon :) p> p> code> p>
S'il est mélangé, vous pouvez lancer une valeur à une chaîne et que la chaîne se compare. Plus lentement mais possible. Je pense aussi que cette option est davantage lisible que l'option code> présentée.
if (value.in(1, 16, -500, 42.42, 'something')){
// blah blah blah
}
Sachez simplement que la méthode array.prototype.indexof code> n'est pas disponible sur IE.
@Cms merci pour un précieux avis. Cependant, peut être fixé à la fois. Stackoverflow.com/Questtions/1744310/...
Cela pourrait faire une bonne fonction utilitaire pour éviter de rendre la déclaration si encore plus complexe que l'original. Il suffit de passer dans un tableau de valeurs et de voile que vous avez une syntaxe sténographique.
Je recommanderais fortement contre le prototypage sur objet code>. Outre la nature généralisée de la pollution des espaces de noms, il existe un risque élevé de casser le code qui utilise des objets comme mappages de recherche. Mieux vaut mettre ce type de méthode utilitaire sur le tableau objet code>, nommément "objets hôtes" comme des nœuds DOM.
Ne pas Modifier des objets que vous ne possédez pas , spécialement objet.pototype code>!
@ Li0liq, au fait, dans code> est un mot réservé, car c'est un Mot-clé . Il ne devrait pas être utilisé comme identifiant ...
Vous pouvez étendre l'objet tableau: puis si vous stockez toutes ces valeurs dans un tableau, vous pouvez faire quelque chose comme MyValues.Contains (valeur) P> P> P> P>
Si la coercition de type n'est pas attendue, je vous recommanderais d'utiliser === code> au lieu de == code>, cependant imo, avec cette approche, la meilleure chose à faire est d'utiliser la norme array.pototype.indexof code> méthode, comme @ li0liq mention, est disponible Nativement i> sur tous les navigateurs sauf c.-à-coup d'accord.
Le commutateur est un choix acceptable. Vous pouvez également utiliser une carte, en fonction de la complexité du problème (en supposant que vous avez plus que ce que vous mettez dans votre exemple).
var accept = { 1: true, 16: true, '-500': true, 42.42: true, something: true };
if (accept[value]) {
// blah blah blah
}
Eh bien, vous pouvez utiliser une instruction de commutation ...
if ("1,16,-500,42.42,something".indexOf(value) !== -1) {
// blah
}
var value= -55;
switch(value){
case 1: case 16: case -55: case 42.5: case 'something':
alert(value); break;
}
Dans un effort pour faire encore une autre façon de le faire ...
if (/^(1|16|-500|42.42|something)$/.test(value)) {
// blah blah blah
}
Voter pour fermer en tant que duplicata de Vérifiez l'égalité de variable sur une liste de valeurs ; Oui, c'est plus récent, mais les réponses sont beaucoup plus à jour. En d'autres termes, c'est le post plus "canonique".