JavaScript中只支持一維數組,但是可以在數組中嵌套數組來創建二維以至於多維的數組。今天下午在看書時候,發現一道感覺比較有意思的題,就是js中如何求二維數組的列之和和行之和,現在就給大家分享下,共同交流交流。
參差不齊的數組行之和
1 var grades=[[1],[1,2],[1,2,3]]; 2 var num=0; 3 var sum=0; 4 var i=0; 5 var j=0; 6 for(i=0;i<grades.length;i++){ //多少行 7 for(j=0;j<grades[i].length;j+) {//多少列 8 sum+=a[i][j]; 9 } 10 num=sum/grades[i].length 11 console.log("第"+parseInt(i+1)+"行"+" 平均值:"+num.toFixed(2)); 12 num=0; 13 sum=0; 14 }
二維數組列之和
1 var grades=[[1,2,3,4],[1,2,3,4],[1,2,3,4]]; 2 var num=0; 3 var sum=0; 4 var i=0; 5 var j=0; 6 for(j=0;j<grades[i%grades.length].length;i++){ 7 for(i=0;i<grades.length;i++) { 8 sum+=a[i][j]; 9 } 10 num=sum/grades.length 11 console.log("第"+parseInt(j+1)+"列"+" 平均值:"+num.toFixed(2)); 12 num=0; 13 sum=0; 14 }
可能有人對這句話有疑問: j<grades[i%grades.length].length
當我們寫程序時,j的第一感覺取值范圍應為0-grades[i].length,但是實際上並不能,因為如果對列求和,那先把數組里面的(grades[i][j])的j置0,然后是i++。
j < grades[i%grades.length].length,因為在第二個for語句中i只有為0 1 2 才進去,i=3時,已經跳到第一個for循環,所以如果寫
j<grades[i].length(第i行的長度) 這時的i會有3這個值,但是我沒得行的索引最多是2,並不是3,這樣就會產生越界問題,我們想要讓i取0 1 2 ,所以就有對3求余,如果我們加更多的行怎么辦呢,這時候就明白為什么對grades.length求余了。