嵌套循环混淆的第二部分?

时间:2016-07-17 09:42:53

标签: javascript arrays for-loop multidimensional-array

我很抱歉在这里问,但我看了无数的视频并阅读了一堆,但我仍然无法围绕嵌套的循环。我知道,当外循环运行一次时,内循环将运行x次。我在某种程度上听过时钟的类比。

例如:

var arr = [
  [1,2], [3,4], [5,6]
];
for (var i=0; i < arr.length; i++) {
  for (var j=0; j < arr[i].length; j++) {
    console.log(arr[i][j]);
  }
}

我理解第一个循环将如此迭代[1,2],[2,4],[5,6]; 为0,1,2。

然而内部for循环会发生什么?它会迭代1,2 3,4 5,6吗?或者只是超过1,2,5?如果有人可以帮助我克服这种大脑堵塞,我会真的很感激它!

4 个答案:

答案 0 :(得分:1)

  

它会迭代1,2 3,4 5,6?

是的,确切地说,因为我们从[1, 2]数组开始并循环遍历其内容,所以我们输出1然后输出2,然后我们转到[3, 4]数组并循环遍历其内容,输出3然后输出4,最后输出[5, 6]数组,输出5和6。

验证和理解这些内容的最佳方法是使用调试器逐步完成它们。每个现代桌面浏览器都内置了功能齐全的调试器;内置于任何体面的JavaScript IDE中;对于像NodeJS这样的环境,如果你没有能够为你处理它的IDE,你可以使用像node-inspector这样的东西。

答案 1 :(得分:1)

非常简单。 看你有一个外环

for (var i=0; i < arr.length; i++) {

因为arr有3个元素i将迭代为0,1,2。

现在每个0,1,2都有一个内循环

for (var j=0; j < arr[i].length; j++)

所以说i = 0,j将从0 to arr[0].length迭代,即0 to 2 当i = 1时,j将从0迭代到arr [1] .length,依此类推。

现在内循环内发生了什么: arr [i] [j]有一个控制台日志。所以

i = 0, j = 0, arr[0][0] = 1
       j = 1, arr[0][1] = 2
i = 1, j = 0, arr[1][0] = 3
       j = 1, arr[1][1] = 4, and so on...

因此,当您检查控制台时,您将获得1,2,3,4,依此类推......

您也可以运行以下代码:

var arr = [
  [1, 2],
  [3, 4],
  [5, 6]
];
for (var i = 0; i < arr.length; i++) {
  for (var j = 0; j < arr[i].length; j++) {
    console.log(arr[i][j]);
  }
}

答案 2 :(得分:0)

控制台中的内部循环结果如下:

1
2
3
4
5
6

答案 3 :(得分:0)

第一个循环你是对的。由于arr.length为3,因此将迭代为0,1,2。

内部循环将根据其长度arr[i].length迭代内部数组。

因此,对于每个内部数组,在您的情况下为0,1,因为每个内部数组的原因arr[i].length为2。

这是一个稍微修改过的数组的例子:

var arr = [
  [1,2], [3,4,7], [5,6]
];

现在arr.length仍然是3,所以外循环整合:0,1,2

但内循环迭代:

  • 0,1表示i = 0
  • 0,1,2表示i = 1
  • 0,1 for i = 2

因为arr[0].lengtharr[2].length是2,而arr[1].length是3