1.做了个小小练习,对矩阵进行转置和对不规则的二维数组进行行列互换(不规则二维数组不存在有转置矩阵一说)。用以加深对二维数组的理解。
2.效果图如下:
3.两种方式的代码分别如下:
3.1规则矩阵转置:
1 //规则转置 2 var array2=[[1,2,3],[4,5,6]]; 3 var array22=new Array(); 4 array22[0]=new Array(2); 5 array22[1]=new Array(2); 6 array22[2]=new Array(2); 7 //进行转置动作 8 for(var i=0;i<array2.length;i++) 9 { 10 for(var j=0;j<array2[i].length;j++) 11 { 12 array22[j][i]=array2[i][j]; 13 } 14 } 15 for (var i=0;i<array2.length ;i++ ) 16 { 17 for (var j=0;j<array2[i].length ;j++ ) 18 { 19 document.writeln(array2[i][j]+" "); 20 } 21 document.writeln("<br/>"); 22 } 23 document.writeln("<br/><br/>转置后的数据:<br/>"); 24 for (var i=0;i<array22.length ;i++ ) 25 { 26 for (var j=0;j<array22[i].length ;j++ ) 27 { 28 document.writeln(array22[i][j]+" "); 29 } 30 document.writeln("<br/>"); 31 }
3.2 不规则二维数组转置
1 var array2=[[1,2,3],[4,5,6],[7,8,9],[10,11]]; 2 var array22=new Array(); 3 var maxRows=array2[0].length; 4 var cols=new Array(); 5 //创建那个转置的数组 6 for(var i=0;i<array2.length;i++) 7 { 8 //获取每行的列数 9 cols[i]=array2[i].length; 10 if(maxRows<cols[i]) 11 { 12 maxRows=cols[i]; 13 } 14 } 15 for(var i=0;i<maxRows;i++) 16 { 17 array22[i]=new Array(); 18 } 19 20 for(var i=0;i<array2.length;i++) 21 { 22 for(var j=0;j<array2[i].length;j++) 23 { 24 array22[j][i]=array2[i][j]; 25 } 26 } 27 28 document.writeln("<br/><br/>转置前的数据:<br/>"); 29 for (var i=0;i<array2.length ;i++ ) 30 { 31 for (var j=0;j<array2[i].length ;j++ ) 32 { 33 document.writeln(array2[i][j]+"    "); 34 } 35 document.writeln("<br/>"); 36 } 37 document.writeln("<br/><br/>转置后的数据:<br/>"); 38 for (var i=0;i<array22.length ;i++ ) 39 { 40 for (var j=0;j<array22[i].length ;j++ ) 41 { 42 document.writeln(array22[i][j]+"    "); 43 } 44 document.writeln("<br/>"); 45 }