1

我很好奇是否有一种方法可以在不使用 if 语句的情况下使用 javascript 来限制数字。假设我有一个从 0 到 100 的数字,但我只希望它允许 30 到 70。所以任何小于 30 的数字都变为 30,大于 70 的数字变为 70。使用 if 语句,它看起来像这样:

var x = 0;
if (x > 70) {
   x = 70;
}
if (x < 30) {
   x = 30;
}

我正在寻找更多涉及算术的解决方案。

4

5 回答 5

6

试试这个:

x = Math.min(70, Math.max(30, x));
于 2013-02-22T20:19:39.817 回答
2

总是有三元表达式?

var x = 0;
    x = x > 70 ? 70 : x;
    x = x < 30 ? 30 : x;

你甚至可以加入他们

var x = 0;
    x = x > 70 ? 70 : x < 30 ? 30 : x;
于 2013-02-22T20:16:56.477 回答
1

当然,您可以使用条件三元运算符 ( .. ? .. : ..) 来完成,但我假设您只是在询问仅使用数学来完成,没有条件。如果是这样,那么您可以使用 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;
于 2013-02-22T20:24:37.037 回答
0

您可以使用条件(三元)运算符并像这样链接它们

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));
于 2013-02-22T20:18:29.730 回答
0

短路

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));
于 2013-02-22T20:19:19.770 回答