开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情
二维和多维数组
二维数组
某城市的几个月的平均温度
var averageTempJan = 31.9;
var averageTempFeb = 35.3;
var averageTempMar = 42.4;
var averageTempApr = 52;
var averageTempMay = 60.8;
现在我们已经知道这些数据了,那么要保存两天的每小时气温数据就可以这样:
var averageTempDay1 =[72,75,79,79,81,81];
var averageTempDay2 = [81,79,75,75,73,72];
然而,这不是最好的方法。我们可以做得更好。我们可以使用矩阵(二维数组)来存储这些信息。矩阵的行保存每天的数据,列对应小时级别的数据:
var averageTemp = [l;
averageTemp[0] =[72,75,79,79,81,81];
averageTemp[1] =[81,79,75,75,73,72];
JavaScript只支持一维数组,并不支持矩阵。但是,我们可以像上面的代码一样,用数组套数组,实现矩阵或任一多维数组。代码也可以写成这样:
/day 1
averageTemp[0] = [];
averageTemp[0][0] = 72
;averageTemp[0][1] = 75;
averageTemp[0][2] = 79;
averageTemp[0][3] = 79;
averageTemp[0][4] = 81;
averageTemp[0][5] = 81;
//day 2
averageTemp[1] = [];
averageTemp[1][0] = 81;
averageTemp[1][1] = 79;
averageTemp[1][2] = 75;
averageTemp[1][3] = 75;
averageTemp[1][4] = 73;
averageTemp[1][5] = 72;
选代二维数组的元素
如果想看这个数组的输出,我们可以创建一个通用函数,专门输出其中的值:
function printMatrix(myMatrix) {
for (var i=0;i<myMatrix.length;i++){
for (var j=0; j<myMatrix[il.length; j++){
console.log(myMatrix[i][j]);
}
}
}
需要遍历所有的行和列。因此,我们需要使用一个嵌套的for循环来处理,其中变量i为行变量j为列。
使用以下代码查看矩阵averageTemp的输出:
printMatrix(averageTemp);
多维数组
我们也可以用这种方式来处理多维数组。假如我们要创建一个3x3x3的矩阵,每一格里包矩阵的i(行)、j(列)及z(深度)之和:
var matrix3x3x3 =[];
for (var i=0;i<3;i++){
matrix3x3x3[i] = [];
for (var j=0;j<3;j++){
matrix3x3x3[i][j] = [];
for (var z=0;z<3; z++){
matrix3x3x3[i][j][z] = i+j+z;
}
}
}
数据结构中有几个维度都没关系,我们都可以用循环遍历每个维度来访问所有格子。