我可以创建一个计数器来输出以下计数器吗

时间:2019-08-21 08:21:09

标签: javascript loops

我需要2个计数器,ij,每次迭代时输出以下计数器:

0,1,2,3,4,1,2,3,4,2,3,4,3,4

当输出到console.log时,实现上述目的的计数器变量序列如下:

i,j,j,j,j,i,j,j,j,i,j,j,i,j

对于每次迭代,当i递增时,j必须在i + 1处开始递增,并且对于i的每次递增必须完成循环。

每个计数器的值将用于显示数组中的选项,以便彼此比较。

我尝试过使用嵌套的for循环,但没有成功。我也正在调用一个包含第二个循环的函数,但取得了一些成功,但我想知道是否有更优雅的方法来完成此操作。

function createValues() {
    for (i = 0; i < 9; i++) {
        var counter_i = i;
        decreasingLoop(counter_i);
    }
}
var k = 1; // counter for inner values loop
function decreasingLoop(get_i) {
    for (j = k; j < 10; j++) {
    // functions using the counters are entered here.
    if (j == 9) { // increments k so that the next time the counter runs it starts at +1 from previous iteration)
        k++;
        }
    }
    j = k;
}

我获得了预期的结果,但想知道是否有一种更简单的方法来达到预期的结果。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果以其他格式写出所需的输出,则解决方案可能会变得更加清晰:

i: 0
  j: 1,2,3,4

i: 1
  j: 2,3,4

i: 2
  j: 3,4

i: 3
  j: 4

从上面的示例中可以看到,i线性增加,并且仅将0的值取到3。每次i取一个新值时,ji+1到4循环。使用这个想法,您可以为i创建一个外部for循环(从0开始循环)到3)和j的内部for循环,该循环从i+1开始并在j等于4时结束:

for(let i = 0; i <= 3; i++) {
  console.log(i);
  for(let j = i+1; j <= 4; j++) {
    console.log(j);
  }
}

答案 2 :(得分:0)

尝试以下嵌套循环-请注意,在第二个循环中,值的初始值为j=i+1

let n=4, m=5;

for(let i=0; i<n; i++) for(let j=i+1; j<m; j++) {
  console.log({i,j});
}