寻找一种迭代具有此约束的项目的算法

时间:2014-04-09 07:35:28

标签: javascript algorithm math

我有一个10项的数组。我有一个从0到20的循环。 我在每个索引处获取数组的位置,但是当我到达数组的最后位置时,下一次迭代应该从它的5°位置开始。

所以,有些人喜欢:

Array[0]
Array[1]
Array[2]
Array[3]
Array[4] 
Array[5]
Array[6]
Array[7]
Array[8]
Array[9]
Array[4]  <== reached max array's lenght. restart iteration at 5° position
Array[5]
Array[6]
Array[7]
Array[8]
Array[9]
Array[4]  <== reached max array's lenght. restart iteration at 5° position
Array[5]
Array[6]
Array[7]
Array[8]

此刻我有:

for (var i = 0; i < 20; i++) {
    value = MyArray[(i % MyArray.length)];
}

但我不知道如何将“重启在5°位置”。 我认为有些事情如下:

i % MyArray.length * "number of time 10 is inside 20"

但我找不到合适的Javascript功能。

2 个答案:

答案 0 :(得分:1)

使用一个两个单独的变量:一个作为计数器,另一个作为迭代器:

var j = 0, i = 0;
while(i++ < 20) {
    if (j === MyArray.length) {
        j = 4;
    }
    console.log(MyArray[j]);
    j++;
}

答案 1 :(得分:0)

使用函数而不是循环:

var len = MyArray.length;
(function doLoopandRestartat5(val){

    console.log(MyArray[val]);

    if(val<len) { doLoopandRestartat5(++val) }
    else { doLoopandRestartat5(4); }

})(0);

或类似的东西..在这里快速打字..