我很抱歉在这里问,但我看了无数的视频并阅读了一堆,但我仍然无法围绕嵌套的循环。我知道,当外循环运行一次时,内循环将运行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?如果有人可以帮助我克服这种大脑堵塞,我会真的很感激它!
答案 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
但内循环迭代:
因为arr[0].length
和arr[2].length
是2,而arr[1].length
是3