假设x和是a数字b。我需要限制x在段的范围内[a, b]。
x
a
b
[a, b]
换句话说,我需要一个钳位功能:
clamp(x) = max( a, min(x, b) )
任何人都可以想出一个更具可读性的版本吗?
你这样做的方式很标准。您可以定义一个效用clamp函数:
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); };
(尽管扩展语言内置插件通常不被接受)