我需要2个计数器,i
和j
,每次迭代时输出以下计数器:
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;
}
我获得了预期的结果,但想知道是否有一种更简单的方法来达到预期的结果。
答案 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
取一个新值时,j
从i+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});
}