编程成语“增量数值达到”

时间:2016-11-22 18:18:09

标签: idioms

我经常遇到需要“循环”一个数字的情况。也就是说给定值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);

}

2 个答案:

答案 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