限制数字而不使用if语句

时间:2013-02-22 20:15:16

标签: javascript jquery math if-statement

我很好奇是否有办法用javascript限制数字而不使用if语句。假设我有一个从0到100的数字,但我只希望它允许30到70.所以小于30的任何东西变成30而大于70的东西变成70.使用if语句它看起来像这样:

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

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

5 个答案:

答案 0 :(得分:5)

试试这个:

x = Math.min(70, Math.max(30, x));

答案 1 :(得分: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;

答案 2 :(得分:1)

当然你可以使用条件三元运算符(.. ? .. : ..)来完成它,但我假设你只是在用数学,没有条件的情况下做这件事。如果是这样,那么你可以使用绝对函数来完成它:

var x30 = x - 30;
var x30 = (x30 + Math.abs(x30)) / 2  + 30;
var x70 = 70 - x;
var x70 = 70 - (x70 + Math.abs(x70)) / 2;

答案 3 :(得分: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));

答案 4 :(得分:0)

短路

var x = Math.floor(Math.random()*100)

x = x > 70 ? 70 : (x < 30 ? 30 : x);

单行,不发表声明。

或者你可以使用max / min

var x = Math.floor(Math.random()*100)

x = Math.min(70, Math.max(30, x));
相关问题