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求余了。