假设我正在尝试声明两个整数(即 0 和 3)之间的范围。任何低于该范围的值都将从上端循环返回,反之亦然。这有点像整数在其他语言中的工作方式。
例如(范围 0 到 3):
cap(-4) // returns 0
cap(-3) // returns 1
cap(-2) // returns 2
cap(-1) // returns 3
cap(0) // returns 0
cap(1) // returns 1
cap(2) // returns 2
cap(3) // returns 3
cap(4) // returns 0
cap(5) // returns 1
cap(6) // returns 2
cap(7) // returns 3
cap(8) // returns 0
我能编写的最好的工作代码是这样的:
const cap = (value, low, high) => value < low ? high - (high - value) % (high - low + 1) : (value - low) % (high - low + 1) + low
有没有更优雅的方法来做到这一点?我觉得有一种方法可以在不使用条件的情况下做到这一点。
最佳答案
实现从零开始的范围的特殊情况:
const mod = (n, m) => (m + n % m) % m;
那么整体操作是这样的:
const cap = (value, low, high) => low + mod(value - low, high - low + 1);
关于javascript - 如何将值限制在 2 个整数之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70231541/