JavaScript多维数组操作分享

175 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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;
        }
    }
}

数据结构中有几个维度都没关系,我们都可以用循环遍历每个维度来访问所有格子。