192 votes

Comment vérifier si un nombre est compris entre deux valeurs ?

En JavaScript, je demande au navigateur de faire quelque chose si la taille de la fenêtre est supérieure à 500px. Je le fais comme ça :

if (windowsize > 500) {
    // do this
}

Cela fonctionne très bien, mais j'aimerais appliquer cette même méthode, mais avec une plage de chiffres. Je voudrais donc dire à mon navigateur de faire des choses si la taille de la fenêtre est comprise entre 500px et 600px. Je sais que cela ne fonctionnerait pas, mais voici comment je l'ai imaginé :

if (windowsize > 500-600) {
    // do this
}

Est-ce que c'est possible, même en JavaScript ?

292voto

Vohuman Points 79122

Vérifie si windowsize est supérieure à 500 et inférieur à 600 ce qui signifie que ni les valeurs 500 o 600 lui-même aura pour effet de rendre la condition vraie.

if (windowsize > 500 && windowsize < 600) {
  // ...
}

147voto

David Thomas Points 111253

J'ai eu un moment, alors, bien que vous ayez déjà accepté une réponse, j'ai pensé que je pourrais contribuer ce qui suit :

Number.prototype.between = function(a, b) {
  var min = Math.min.apply(Math, [a, b]),
    max = Math.max.apply(Math, [a, b]);
  return this > min && this < max;
};

var windowSize = 550;

console.log(windowSize.between(500, 600));

Démonstration de JS Fiddle .

Ou, si vous préférez avoir la possibilité de vérifier qu'un nombre se situe dans la plage définie y compris les points finaux :

Number.prototype.between = function(a, b, inclusive) {
  var min = Math.min.apply(Math, [a, b]),
    max = Math.max.apply(Math, [a, b]);
  return inclusive ? this >= min && this <= max : this > min && this < max;
};

var windowSize = 500;

console.log(windowSize.between(500, 603, true));

Démonstration de JS Fiddle .

J'ai ajouté une modification mineure à ce qui précède, étant donné que, comme indiqué dans les commentaires -

Function.prototype.apply() est lent ! De plus, l'appeler quand on a un nombre fixe d'arguments est inutile

il valait la peine de supprimer l'utilisation de Function.prototype.apply() qui donne les versions modifiées des méthodes ci-dessus, d'abord sans l'option "inclusive" :

Number.prototype.between = function(a, b) {
  var min = Math.min(a, b),
    max = Math.max(a, b);

  return this > min && this < max;
};

var windowSize = 550;

console.log(windowSize.between(500, 600));

Démonstration de JS Fiddle .

Et avec l'option "inclusive" :

Number.prototype.between = function(a, b, inclusive) {
  var min = Math.min(a, b),
    max = Math.max(a, b);

  return inclusive ? this >= min && this <= max : this > min && this < max;
}

var windowSize = 500;

console.log(windowSize.between(500, 603, true));

Démonstration de JS Fiddle .

Références :

113voto

David Points 459

Je préfère mettre la variable à l'intérieur pour donner un indice supplémentaire que le code valide que ma variable est entre des valeurs de plage.

if (500 < size && size < 600) { doStuff(); }

35voto

antongorodezkiy Points 76

C'est une vieille question, mais elle pourrait être utile pour quelqu'un comme moi.

lodash a _.inRange() función https://lodash.com/docs/4.17.4#inRange

Ejemplo:

_.inRange(3, 2, 4);
// => true

Veuillez noter que cette méthode utilise le Lodash et nécessite l'accès à une version installée de Lodash.

7voto

Chinthaka Dilan Points 105

Vous pouvez le faire simplement

if (windowsize > 500 && windowsize < 600) {
//your logic
}

Ou si vous voulez code propre Vous pouvez écrire votre propre fonction dans votre fichier js principal de n'importe quel endroit commun.

Number.prototype.between = function(a, b) {
 var min = Math.min.apply(Math, [a, b]),
    max = Math.max.apply(Math, [a, b]);
  return this > min && this < max;
};

Vous pouvez alors l'appeler comme ceci

if(windowsize.between(500, 600)){
 //your logic
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X