JavaScript在同一个循环中每隔x次迭代一次循环?

时间:2014-03-28 19:08:11

标签: javascript

我不知道该怎么说这个,所以如果这个问题没有意义,请重新标题。无论如何,这正是我想要做的。

我有一个长度为9的变量。 然后我有另一个长度为3的变量。

如何编写一个循环遍历所有9但是每隔三次启动的循环?

例如:我有,

x = 3;
l = 9;

for ( var i = 0; i < l; i++)
{ 
     console.log(i + 1);
}

output = 1,2,3,4,5,6,7,8,9

我想要创建的输出

output = 1,2,3,1,2,3,1,2,3

我当时认为用if语句或模数可能会有用,但不太确定如何实现它。这样做有什么好办法?提前谢谢。

6 个答案:

答案 0 :(得分:2)

拥抱模数:

function expand(length, loop_length) {
  for (var i = 0; i < length; i++) {
    console.log(i % loop_length + 1);
  } 
}
expand(9, 3) // =>  1, 2, 3, 1, 2, 3, 1, 2, 3

答案 1 :(得分:1)

x = 3;
l = 9;

for ( var i = 0; i < l; i++)
{ 
     console.log(i % x + 1);
}

输出= 1,2,3,1,2,3,1,2,3

在此处查看此行动:http://jsfiddle.net/BgBGL/

答案 2 :(得分:0)

如果要从最小值循环到最大值特定次数,最简单的方法就是有2​​个循环,如下所示:

var min = 1, max = 3, times = 3;
for (var i = 0; i < times; i++) {
    for (var j = min; j <= max; j++) {
         console.log(j);
    }
}

或者如果你想修复序列的总长度,那么是的,你可以用一个循环和一点点数学来做:

var min = 1, max = 3, totalLength = 9;
for (var i = 0; i < totalLength; i++) {
    console.log((i % (max - min + 1)) + min);
}

答案 3 :(得分:0)

对于这种情况,这有效:

x = 3;
l = 9;

for ( var i = 0; i < l; i++)
{ 
     var num=(i %(x+1)) || 1;
     console.log(num);
}

答案 4 :(得分:0)

您可能会厌倦以下语法:

var i = 0;

do {
  console.log(i++ % 3 + 1);
} while (i < 9);

或者,您也可以将39定义为变量。

我利用了这样一个事实,即调用i++将显示旧变量并将其增加1,所以我保存了一些位!

请参阅: fiddle example

答案 5 :(得分:0)

x = 3;
l = 9;

for ( var i = 0; i <= l; i++)
{ 
  for ( var j = 1; j <= x; j++)
   { 
     console.log(j);
   }
}