100 votes

Comment puis-je utiliser JavaScript pour limiter un nombre entre une valeur min/max ?

Je veux limiter un nombre entre deux valeurs, je sais qu'en PHP vous pouvez le faire :

$number = min(max(intval($number), 1), 20);
// this will make $number 1 if it's lower than 1, and 20 if it's higher than 20

Comment puis-je faire cela en javascript, sans devoir écrire de multiples if des déclarations et des choses de ce genre ? Merci.

1voto

ajax333221 Points 2997

Je vais partager ma fonction robuste pour faire respecter nombres entiers (en raison de la integer ), il possède des fonctionnalités telles que des paramètres min/max facultatifs et des -0 protection :

function toInt(val, min, max){
    val=(val*1 || 0);
    val=(val<0 ? Math.ceil(val) : Math.floor(val));

    min*=1;
    max*=1;

    min=((Number.isNaN(min) ? -Infinity : min) || 0);
    max=((Number.isNaN(max) ? Infinity : max) || 0);

    return Math.min(Math.max(val, min), max);
}

Quelques notes rapides :

  • El (... || 0) dans les coulisses s'occupe de -0 pour le changer en 0 ce qui est presque toujours ce que vous voulez.
  • El min y max sont facultatifs. Lorsque des valeurs vides ou invalides sont passées, elles seront transformées en -Infinity y Infinity afin qu'ils n'interfèrent pas silencieusement avec Math.min() y Math.max() .
  • Vous pouvez modifier Number.isNaN(x) ECMAScript-6 à x!==x (les résultats ne sont vrais que pour NaN ) pour une meilleure compatibilité avec realmente les anciens navigateurs, mais ce n'est plus forcément le cas.

0voto

Femaref Points 41959

Utilisez Math.min y Math.max .

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