Je veux pouvoir vérifier si une valeur est dans une plage de nombres. Ceci est mon code jQuery ...
if ((year < 2099) && (year > 1990)){
return 'good stuff';
}
Existe-t-il un moyen plus simple de faire cela dans jQuery? Par exemple, y a-t-il quelque chose comme ça ...
if (1990 < year < 2099){
return 'good stuff';
}
Dans de nombreuses langues, la deuxième façon sera évaluée de gauche à droite de manière incorrecte par rapport à ce que vous voulez.
En C, par exemple, 1990 < year
sera évalué à 0 ou 1, qui devient alors 1 < 2099
, ce qui est toujours vrai, bien sûr.
Javascript est assez similaire à C: 1990 < year
renvoie true
ou false
, et ces expressions booléennes semblent se comparer numériquement à 0 et 1 respectivement.
Mais en C #, il ne sera même pas compilé, ce qui vous donne l'erreur:
erreur CS0019: L'opérateur '<' ne peut pas être appliqué aux opérandes de type 'bool' et 'int'
Vous obtenez une erreur similaire de Ruby, alors que Haskell vous indique que vous ne pouvez pas utiliser <
deux fois dans la même expression infixe.
De mémoire, Python est le seul langage qui gère la configuration "entre" de cette manière:
>>> year = 5
>>> 1990 < year < 2099
False
>>> year = 2000
>>> 1990 < year < 2099
True
En fin de compte, le premier moyen (x < y && y < z)
est toujours votre pari le plus sûr.
Vous pouvez faire votre propre méthode:
// jquery
$(function() {
var myNumber = 100;
try {
if (myNumber.isBetween(50, 150))
alert(myNumber + " is between 50 and 100.");
else
alert(myNumber + " is not between 50 and 100.");
} catch (e) {
alert(e.message());
}
});
// js prototype
if (typeof(Number.prototype.isBetween) === "undefined") {
Number.prototype.isBetween = function(min, max, notBoundaries) {
var between = false;
if (notBoundaries) {
if ((this < max) && (this > min)) between = true;
alert('notBoundaries');
} else {
if ((this <= max) && (this >= min)) between = true;
alert('Boundaries');
}
alert('here');
return between;
}
}
j'espère que cela t'aides.
Max
Le moyen le plus simple et rapide d’y parvenir est de créer une fonction comme celle-ci:
function inRange(n, nStart, nEnd)
{
if(n>=nStart && n<=nEnd) return true;
else return false;
}
Ensuite, utilisez ceci comme suit:
inRange(500, 200, 1000) => this return true;
Ou comme ceci:
inRange(199, 200, 1000) => this return false;
À partir d'une solution similaire, cliquez ici: http://indisnip.wordpress.com/2010/08/26/quicktip-check-if-a-number-is-bb-number /
$.fn.between = function(a,b){
return (a < b ? this[0] >= a && this[0] <= b : this[0] >= b && this[0] <= a);
}
Si vous n'aimez pas l'opérateur booléen, vous pouvez toujours utiliser des instructions if imbriquées:
if (1990 < year)
{
if( year < 2099)
return 'good stuff';
}