我学习JavaScript在上freecodecamp的那一刻,他们有一个例子嵌套的for循环在他们excercises之一:了解嵌套的for循环在JavaScript
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]);
}
}
用的console.log = 1 2 3 4 5 6未定义。
我理解循环或多或少,并且我明白[i]和[j]用于访问数组(我认为?)。我只是不明白为什么最后它只是打印出这些数字?我发现这个问题问了几年前,但它只是说明了如何写他们,他们也不怎么工作:
For loop in multidimensional javascript array
我打破了它分解成:
var arr = [ [1,2], [3,4], [5,6]];for (var i=0; i < arr.length; i++) {
console.log(arr[i]);}
打印出
[ 1, 2 ]
[ 3, 4 ]
[ 5, 6 ]
undefined
和
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]); }}
打印出:
[ 1, 2 ]
[ 1, 2 ]
[ 3, 4 ]
[ 3, 4 ]
[ 5, 6 ]
[ 5, 6 ]
undefined
和
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[j]); }}
打印出
[ 1, 2 ]
[ 3, 4 ]
[ 1, 2 ]
[ 3, 4 ]
[ 1, 2 ]
[ 3, 4 ]
undefined
我明白前两个ARR [i]中。循环遍历数组并打印出各个元素(在这个例子中是一个数组),在第二个循环中,我猜它只是做了两次,因为有两个循环。我不明白的是:
- 为什么在ARR [J]数组最后没有打印出来(?哪儿来的 [5,6]去)
- 为什么改编[i] [j ]顿时消除了阵列,只是 打印出其中“未定义”数字
- 来自
谁能帮我出这一点,并打印出来在控制台前解释代码需要哪些步骤?我真的很想理解它,但是甚至不知道如何正确地搜索这个问题。
不要担心最后的'undefined';这是'console.log()'如何解释代码的副产品。 – Pointy
这是不正确的尖尖。 stellatores在最后得到一个未定义的原因是因为他在循环的最后一个循环中递增我,直到命中条件循环。 For循环将始终运行一次,只有满足条件时才会停止。在这种情况下,最后一个循环将i推到等于7,并且在数组中没有第7个位置。这导致未定义,因为数组位置根本没有分配给它的数字。 – Korgrue
@Korgrue不,Pointy是对的。 i循环在终止之前仅从0运行到2。 'undefined'是'for'语句的返回值。 'console.log('Hi')'做同样的事情:它输出'Hi',然后未定义。 – Stuart