我想限制一个介于两个值之间的数字,我知道在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
语句之类的东西呢?谢谢。
发布于 2011-04-30 23:31:57
像这样
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") )
)
发布于 2017-12-16 02:19:17
您至少有两个选择:
您可以使用一对条件运算符(? :
):
number = number > 100 ? 100 : number < 0 ? 0 : number;
或者,您可以组合使用Math.max
和Math.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);
发布于 2018-11-16 23:07:59
使用lodash的clamp
方法:
_.clamp(22, 1, 20) // Outputs 20
https://stackoverflow.com/questions/5842747
复制相似问题