在JavaScript中将数字限制在范围内
将数字限制在特定范围内意味着将其限制在某个范围内。将数字映射到范围意味着将其从一个范围转换为另一个范围。这两个操作在JavaScript中很常见,可以使用简单的数学运算轻松实现。
限制数字
为了限制数字,您可以使用Math.max()
和Math.min()
来找到指定范围内的最接近的值。
const clampNumber = (num, a, b) =>
Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));
clampNumber(2, 3, 5); // 3
clampNumber(1, -1, -5); // -1
将数字转换为安全整数
限制数字的一个特殊情况是将其转换为安全整数。您可以使用Number.MAX_SAFE_INTEGER
和Number.MIN_SAFE_INTEGER
常量来找到最接近的安全值。此外,使用Math.round()
将其转换为整数。
const toSafeInteger = num =>
Math.round(
Math.max(Math.min(num, Number.MAX_SAFE_INTEGER), Number.MIN_SAFE_INTEGER)
);
toSafeInteger('3.2'); // 3
toSafeInteger(Infinity); // 9007199254740991
将数字映射到一个范围
将数字映射到一个范围是一个简单的线性变换。提供原始范围和目标范围,你可以在两个范围的限制之间进行映射。
const mapNumRange = (num, inMin, inMax, outMin, outMax) =>
((num - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;
mapNumRange(5, 0, 10, 0, 100); // 50