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

JavaScript iterate loop every x number of times in same loop?

本文关键字:循环 迭代 一次 JavaScript      更新时间:2023-09-26

我不知道该如何表达,所以如果这个问题没有意义,请重新命名。不管怎样,这就是我要做的。

我有一个长度为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语句或可能的模数来实现这一点,但不太确定如何实现。有什么好方法可以做到这一点?提前谢谢。

接受模数:

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
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/

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

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);
}

对于这种情况,这是有效的:

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

使用以下语法可能会发疯:

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

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

我利用了调用i++将显示旧变量并在之后将其增加1的优势,所以我保存了一些位!

请参阅:fiddle示例

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