我很好奇是否有办法用javascript限制数字而不使用if语句。假设我有一个从0到100的数字,但我只希望它允许30到70.所以小于30的任何东西变成30而大于70的东西变成70.使用if语句它看起来像这样:
var x = 0;
if (x > 70) {
x = 70;
}
if (x < 30) {
x = 30;
}
我正在寻找更多涉及算术的解决方案。
答案 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);
单行,不发表声明。
var x = Math.floor(Math.random()*100)
x = Math.min(70, Math.max(30, x));