我學習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