一 通過迴圈按行順序為5*5的二維數組,a賦值1到25的自然數, 二 然後輸出該數組的左下半三角形,試編程。 [ 1, 2, 3, 4, 5 ] [ 6, 7, 8, 9, 10 ] [ 11, 12, 13, 14, 15 ] [ 16, 17, 18, 19, 20 ] [ 21, 22, 23 ...
一 通過迴圈按行順序為5*5的二維數組,a賦值1到25的自然數,
二 然後輸出該數組的左下半三角形,試編程。
[ 1, 2, 3, 4, 5 ]
[ 6, 7, 8, 9, 10 ]
[ 11, 12, 13, 14, 15 ]
[ 16, 17, 18, 19, 20 ]
[ 21, 22, 23, 24, 25 ]
let arr = [ ]; let count = 0; //.............................1 for(let i = 0; i < 5; i++){ newarr = []; //let count = 0; ..........................2 for(let j = 0; j < 5; j++ ){ newarr.push(++count) } arr.push(newarr) } //console.log(arr[0][0])表示列印第arr里第0個數組的第0個值 for(let i = 0; i < arr.length; i++){ for(let j = 0; j <=i; j++){ document.write(arr[i][j] + '  ') } document.write('<br>') }
代碼執行流程:
1.首先聲明一個空數組
2.迴圈:
生成第一個數組newarr,把1~5放入newarr,再把newarr放入空數組arr(i =0 , j = 1,2,3,4,5)
生成第二個數組newarr,把2~10放入newarr,再把newarr放入空數組arr( i =1 , j = 1,2,3,4,5 )
(共執行5次)
註意let count = 0 在位置1 和 2 的區別,這裡涉及到作用域問題
在位置 1 時,
for(let j = 0; j < 5; j++ )
j = 0 時 ++count 賦值為 1
j = 1 時 ++count 賦值為 2
......
j = 4 時 ++count 賦值為 5(也就是整體第一次迴圈結束,最終保留的是最後一次迴圈的賦值 count = 5)
由於 let count = 0 是在迴圈外面,每次迴圈結束count得到最終賦值並保存下來,當迴圈全部結束,迴圈內的賦值都會被釋放,也就是 count回到全局變數
在位置 2 時, let count = 0 是在迴圈之內,每次都是重新按代碼順序執行一遍,因此,每次都會先取count = 0 ,再進行 ++count