我经常遇到需要“循环”一个数字的情况。也就是说给定值X,我需要将其递增到一个点然后循环回零。这通常导致一些相当冗长的代码,并且有很多“加1”。有没有一个很好的单行或其他一些很好的成语呢?
示例(轻松使用JS轮播):
function cycle() {
const $e = $('.a-carousel');
const activeClass = 'active';
var activeIndex = $e.find('.' + activeClass).removeClass(activeClass).index();
if (activeIndex + 1 >= $e.children().length) {
activeIndex = -1;
}
$e.children().eq(activeIndex + 1).addClass(activeClass);
}
答案 0 :(得分:1)
一般情况下,值 k i 的循环后继,范围 k 0 ,..., k n -1 定义为
下一步( k i )=( k i - k 0 + 1)mod n + k 0
例如,
range = 3 ... 9
k0 = 3
n = 7
k k-k0 k-k0+1 k-k0+1 mod n k-k0+1 mod n + k0
------------------------------------------------------------
6 3 4 4 7
7 4 5 5 8
8 5 6 6 9
9 6 7 0 3
3 0 1 1 4
4 1 2 2 5
5 2 3 3 6
答案 1 :(得分:0)
我不知道是否有一个特殊术语,但你的代码比它需要的更冗长。您可以使用一个增量进行一次if
检查。
(伪代码)
x = MinValue
Loop
Increment x
If x > MaxValue
x = MinValue
Do things with x