12
votes

Existe-t-il une manière plus compacte de vérifier si un numéro se trouve dans une plage?

Je veux pouvoir tester si une valeur est dans une plage de numéros. Ceci est mon code actuel:

if (1990 < year < 2099){
    return 'good stuff';
}


0 commentaires

5 Réponses :


24
votes

Dans de nombreuses langues, la deuxième façon sera évaluée de gauche à droite à droite en ce qui concerne ce que vous voulez.

in c, par exemple, 1990 évaluera à 0 ou 1 , qui devient alors 1 <2099 , qui est toujours vrai, bien sûr.

JavaScript est un assez similaire à C: 1990 retours code> true ou false et ces expressions booléennes semblent comparer numériquement égales à 0 et 1 respectivement.

mais en C #, il ne compilera même pas, Vous donnant l'erreur:

Erreur CS0019: Opérateur '<' ne peut pas être appliqué aux opérandes de type 'bool' et 'int'

Vous obtenez une erreur similaire de Ruby, tandis que Haskell vous dit que vous ne pouvez pas utiliser << / code> deux fois dans la même expression infixe.

hors du haut de mon Head, Python est la seule langue que je suis sûr gère la configuration "entre" de cette façon: xxx

La première ligne est celle du premier moyen (x < Y && Y est toujours votre pari le plus sûr.


1 commentaires

Ok, je voulais dire en JavaScript, désolé. Je suppose que les deux déclarations avec && est la seule façon?



0
votes

Si vous n'aimez pas l'opérateur booléen, vous pouvez toujours utiliser des déclarations imbriquées si: xxx


0 commentaires

11
votes

Vous pouvez créer votre propre méthode: xxx

espère que cela aide.

max


0 commentaires

0
votes

4 commentaires

-1. Vous avez ajouté cela au prototype d'objets JQuery, lorsqu'il est destiné à être ajouté au prototype de numéro , comme expliqué dans le lien que vous avez fourni. Non seulement cela ne se rapportent pas à la question de l'OP, mais c'est une chose peu sensible à faire.


Pourquoi cela ne concerne-il pas? L'OP a demandé une solution JQuery, le lien décrit une solution JS natif. Tout dans JQuery est un objet, d'où le prototype d'objet. Pourquoi est-ce non habituel? D'accord, il faut que la valeur de l'objet soit référencée, plutôt que l'objet lui-même (que j'ai corrigé), mais je pense à peine que cela le rend absurde ... Exemple de travail: jsfiddle.net/xq4ne


Hmm. Suite à vos modifications, je vais concéder que ce n'est plus un non-sens. Ce n'est toujours pas quelque chose que je faisais; Il n'y a aucune raison que la solution de jQuery est meilleure que celle que vous avez liée, et aussi loin que je sache, appelez jQuery en chiffres (vous auriez besoin de faire quelque chose comme $ (4) .between (3,5). n'est pas quelque chose que les gens font (assez raisonnablement, car la plupart des méthodes d'un objet JQuery sont spécifiques aux éléments DOM); vous rompez des motifs de jQuery normaux et forçant une solution de jQuery à quelque chose de 't y a besoin de ça. DOXDESK.com/img/updates/20091116-SO -Large.gif


Si l'OP utilise des données numériques droites dans son script, vous avez raison. Le prototype de nombre serait mieux. Mais que se passe-t-il s'il obtient son numéro d'une contribution? Changez ceci [0] à ceci.val () ... le feriez-vous alors?



2
votes

Le moyen simple et rapide de faire ceci est de créer une fonction comme ceci: xxx

puis utilisez-le comme suit: xxx

Ou comme ceci: xxx


0 commentaires