如何使用 JavaScript 将数字限制在最小值/最大值之间?

新手上路,请多包涵

我想限制两个值之间的数字,我知道在 PHP 中你可以这样做:

 $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

我如何在 javascript 中执行此操作,而不必编写多个 if 语句和类似的东西?谢谢。

原文由 Alexandra 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 570
2 个回答

像这样

var number = Math.min(Math.max(parseInt(number), 1), 20);

现场演示:

 function limitNumberWithinRange(num, min, max){
  const MIN = min || 1;
  const MAX = max || 20;
  const parsed = parseInt(num)
  return Math.min(Math.max(parsed, MIN), MAX)
}

alert(
  limitNumberWithinRange(  prompt("enter a number")   )
)

原文由 Govind Malviya 发布,翻译遵循 CC BY-SA 4.0 许可协议

你至少有两个选择:

您可以使用一对条件运算符 ( ? : ):

 number = number > 100 ? 100 : number < 0 ? 0 : number;

或者您可以组合 Math.maxMath.min

 number = Math.min(100, Math.max(0, number));

在这两种情况下,您都比较容易混淆自己,因此如果您在多个地方执行此操作,您可能会考虑使用一个效用函数:

 function clamp(val, min, max) {
    return val > max ? max : val < min ? min : val;
}

然后:

 number = clamp(number, 0, 100);

原文由 T.J. Crowder 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题