为什么这个循环不会产生我想要的结果呢?

Tri*_*rip 2 javascript jquery coffeescript

期望的结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Run Code Online (Sandbox Code Playgroud)

我的循环:

arr = []
n = 0; b = 0
while b < 2
  while n < 12
    arr.push n
    n++
  b++
return arr
Run Code Online (Sandbox Code Playgroud)

实际结果 :

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Run Code Online (Sandbox Code Playgroud)

Ian*_*Ian 6

n在内循环中完成后,将值重新初始化为0:

arr = []
n = 0; b = 0
while b < 2
  while n < 12
    arr.push n
    n++
  n = 0         // <------ Added this
  b++
return arr
Run Code Online (Sandbox Code Playgroud)

这样,每个外部迭代都具有"新鲜"值n.

虽然有了这个,我得到的值是0到11,而不是你想的1到12.所以我会修改它(使用真正的JS):

function test() {
    var arr = [];
    var n = 1;
    var b = 0;
    while (b < 2) {
        while (n <= 12) {
            arr.push(n);
            n++;
        }
        n = 1;
        b++;
    }
    return arr;
}
Run Code Online (Sandbox Code Playgroud)

但正如@Blender指出的那样,既然你真的只是在模仿一个for循环,那就用一个!:

function test2() {
    var arr = [];
    for (var b = 0; b < 2; b++) {
        for (var n = 1; n <= 12; n++) {
            arr.push(n);
        }
    }
    return arr;
}
Run Code Online (Sandbox Code Playgroud)

  • @Blender当然,我只想指出眼前的问题.快速发布答案,然后解释如下:) (2认同)