我很好奇是否有一种方法可以在不使用 if 语句的情况下使用 javascript 来限制数字。假设我有一个从 0 到 100 的数字,但我只希望它允许 30 到 70。所以任何小于 30 的数字都变为 30,大于 70 的数字变为 70。使用 if 语句,它看起来像这样:
var x = 0;
if (x > 70) {
x = 70;
}
if (x < 30) {
x = 30;
}
我正在寻找更多涉及算术的解决方案。
我很好奇是否有一种方法可以在不使用 if 语句的情况下使用 javascript 来限制数字。假设我有一个从 0 到 100 的数字,但我只希望它允许 30 到 70。所以任何小于 30 的数字都变为 30,大于 70 的数字变为 70。使用 if 语句,它看起来像这样:
var x = 0;
if (x > 70) {
x = 70;
}
if (x < 30) {
x = 30;
}
我正在寻找更多涉及算术的解决方案。
试试这个:
x = Math.min(70, Math.max(30, x));
总是有三元表达式?
var x = 0;
x = x > 70 ? 70 : x;
x = x < 30 ? 30 : x;
你甚至可以加入他们
var x = 0;
x = x > 70 ? 70 : x < 30 ? 30 : x;
当然,您可以使用条件三元运算符 ( .. ? .. : ..
) 来完成,但我假设您只是在询问仅使用数学来完成,没有条件。如果是这样,那么您可以使用 Absolute 函数来做到这一点:
var x30 = x - 30;
var x30 = (x30 + Math.abs(x30)) / 2 + 30;
var x70 = 70 - x;
var x70 = 70 - (x70 + Math.abs(x70)) / 2;
您可以使用条件(三元)运算符并像这样链接它们
var x = 0;
x = x > 70 ? 70 : x < 30 ? 30 : x;
不知道这是多么可读:)
或者,您可以使用 Math.min() 和 Math.max()
var x = 0;
x = Math.max(30, Math.min(x, 70));
var x = Math.floor(Math.random()*100)
x = x > 70 ? 70 : (x < 30 ? 30 : x);
单行,没有 if 语句。
var x = Math.floor(Math.random()*100)
x = Math.min(70, Math.max(30, x));