首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用JavaScript将数字限制在最小/最大值之间?

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

Stack Overflow用户
提问于 2011-04-30 23:28:29
回答 6查看 96.2K关注 0票数 88

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

代码语言:javascript
复制
$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语句之类的东西呢?谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-04-30 23:31:57

像这样

代码语言:javascript
复制
var number = Math.min(Math.max(parseInt(number), 1), 20);

实时演示:

代码语言:javascript
复制
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")   )
)

票数 185
EN

Stack Overflow用户

发布于 2017-12-16 02:19:17

您至少有两个选择:

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

代码语言:javascript
复制
number = number > 100 ? 100 : number < 0 ? 0 : number;

或者,您可以组合使用Math.maxMath.min

代码语言:javascript
复制
number = Math.min(100, Math.max(0, number));

在这两种情况下,都很容易混淆自己,所以如果您在多个地方执行此操作,则可以考虑使用一个实用函数:

代码语言:javascript
复制
function clamp(val, min, max) {
    return val > max ? max : val < min ? min : val;
}

然后:

代码语言:javascript
复制
number = clamp(number, 0, 100);
票数 26
EN

Stack Overflow用户

发布于 2018-11-16 23:07:59

使用lodash的clamp方法:

_.clamp(22, 1, 20) // Outputs 20

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5842747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档