javascript - 如何将值限制在 2 个整数之间?

标签 javascript

假设我正在尝试声明两个整数(即 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/

相关文章:

javascript - for 循环中的 lineTo() 方法

javascript - 为什么这不起作用?使用鼠标指针插入盒子

javascript - 使用 Framer Motion React 在退出时对组件进行动画处理

javascript - 创建标签框

javascript - 在函数外丢失值

JavaScript/MomentJS : normalizing dates to current year

javascript - PHP 不会发布值表

javascript - 如何将数据从子级传递给父级 : Angular2

javascript - Jquery 中的 Google 帐户下拉列表

javascript - 在正则表达式中添加删除和箭头键