当我需要将整数限制为最小值和最大值时,我试图解决问题。在我的情况下,它的值可以是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语句可以做到这一点,但我想知道是否可以使用自定义函数更聪明。
答案 0 :(得分:1)
我想知道是否有可能使用自定义功能更聪明。
数学不一定更聪明,但使用额外的函数可以减少编写,更易读和更好的可维护性。要解决负值的问题,请使用:
function mod200(n) {
return (n % 200 +200) % 200;
}
>>> mod200(100 - 100)
0
>>> mod200(100 - 150)
150
>>> mod200(100 + 150)
50
答案 1 :(得分:-1)
function bound(value, min, max) {
return Math.min(Math.max(val,min),max);
}
所以在你的情况下,bound(value,0,200);