当我需要将整数限制为最小值和最大值时,我正在尝试解决问题。在我的情况下,它的值可以从 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);