Javascript 数学运算范围编号



当我需要将整数限制为最小值和最大值时,我正在尝试解决问题。在我的情况下,它的值可以从 0 到 200,如果您添加它应该作为开销添加。所以我想要的是:

var value = 100;
//value - 100  should be 0
//value - 150 should be 150
//value + 150 should be 50

现在我有解决方案如何正确限制顶部(并且仅当 min 为 0 时):

(value - 150) % 200

我知道可以使用if语句来做到这一点,但我想知道是否可以使用自定义函数更智能。

我想知道是否有可能使用自定义函数更智能。

数学不一定更聪明,但使用额外的函数会更少编写,更具可读性和更好的可维护性。要解决负值问题,请使用:

function mod200(n) {
    return (n % 200 +200) % 200;
}

>>> mod200(100 - 100)
0
>>> mod200(100 - 150)
150
>>> mod200(100 + 150)
50
function bound(value, min, max) {
    return Math.min(Math.max(val,min),max);
}

所以在你的情况下,bound(value,0,200);

最新更新