我正在寻找一种更简单的方法来编写这一小段代码:
if (a > max)
a = max;
if (a < min)
a = min;
在javascript中执行此操作的最简单方法是什么?
答案 0 :(得分:4)
a = (a > max) ? max : a;
a = (a < min) ? min : a;
甚至
a = (a < min) ? min : (a > max) ? max : a;
答案 1 :(得分:3)
a = Math.max(min, Math.min(max, a));
如果你想要可读性,那么这样的事情可能会更好:
function bounded(val, min, max) {
if (val < min) {
return min;
} else if (val > max) {
return max;
} else {
return val;
}
}
这很容易理解,因为只有在详细程度不是主要问题时才定义。像这样使用它:
a = bounded(a, 0, 10);
答案 2 :(得分:2)
a = Math.max(Math.min(a, max), min);
这真的很简单吗?
答案 3 :(得分:0)
我认为代码有点难以理解,原因如下:
if
分为两行因此,我发现以下缩进的评论更好,更简单,更清晰:
// Limit a to the [min,max] interval
if (a > max) a = max;
if (a < min) a = min;
奖励积分:显然我们假设min&lt; max。