将数字限制为一个区段的最优雅方法是什么?
2022-08-30 01:52:35
你这样做的方式是相当标准的。您可以定义一个实用程序函数:clamp
/**
* Returns a number whose value is limited to the given range.
*
* Example: limit the output of this computation to between 0 and 255
* (x * 255).clamp(0, 255)
*
* @param {Number} min The lower boundary of the output range
* @param {Number} max The upper boundary of the output range
* @returns A number in the range [min, max]
* @type Number
*/
Number.prototype.clamp = function(min, max) {
return Math.min(Math.max(this, min), max);
};
(尽管扩展语言内置通常不受欢迎)
一个不那么“数学”导向的方法,但也应该工作,这样,/测试被暴露出来(也许比最小最大化更容易理解),但它实际上取决于你所说的“可读”是什么意思<
>
function clamp(num, min, max) {
return num <= min
? min
: num >= max
? max
: num
}