在javascript中循环浏览任一方向的范围

时间:2018-06-07 18:21:23

标签: javascript modulus

我正在寻找实现以下目标的简化方法:

  

在任一方向上遍历范围0 to x,其中x是任意正数。

以下是我到目前为止使用modulus的内容,但我想知道是否有办法进一步简化它?

上调:

v = (v + 1) % total

减少:

v = v ? (v - 1) % x : x - 1

1 个答案:

答案 0 :(得分:1)

增加伪代码已经完全简化,但是,您可以通过以下两种方式之一简化减少的逻辑:

v = v ? v - 1 : x - 1

v = (v + x - 1) % x

前者是有​​效的,因为你知道减量永远不需要被调制到[0, x)范围内,但后一种方法是首选的,因为它避免了不必要的分支逻辑。

请记住,作为边缘情况,如果x超过Number.MAX_SAFE_INTEGER(2 ** 53 - 1)的一半,则第一种方法是唯一可以按预期工作的方法