javascript二维数组介绍

    |     2021年5月26日   |   html/css/js, web前端技术   |     0 条评论   |    1239

JavaScript 没有单独的「二维数组类型」。所谓二维数组,就是元素仍是数组 的数组。访问写成 a[行][列],先取外层下标得到一行,再取内层下标得到单元格。

下面按定义、初始化、遍历、对角线求和、打印下三角五步把常用操作走一遍。下标都从 0 开始。

一、定义:数组的数组

长度为 4 的外层数组,每个元素又是长度 4 的内层数组。右侧注释标出了每个格子的下标:

var arr = [[1,2,4,6],[2,4,7,8],[8,9,10,11],[9,12,13,15]] //arr数组长度为4,每个元素是一个长度为4的数组
var a = [
    [1,2,4,6],      // a[0][0] a[0][1] a[0][2] a[0][3]
    [2,4,7,8],      // a[1][0] a[1][1] a[1][2] a[1][3]
    [8,9,10,11],    // a[2][0] a[2][1] a[2][2] a[2][3]
    [9,12,13,15]    // a[3][0] a[3][1] a[3][2] a[3][3]
]
写法 含义 例子
a[0] 第 0 行(仍是数组) [1,2,4,6]
a[0][2] 第 0 行第 2 列 4
a.length 行数 4
a[i].length 第 i 行的列数 本例每行都是 4

二、初始化

先 new Array(10) 得到 10 个空位,再给每一行 new Array(8),填入 i + j。结果是 10 行 8 列,第 i 行第 j 列等于 i+j:

/*
            0   1   2   3   4   5   6   7
            1   2   3   4   5   6   7   8
            2   3   4   5   6   7   8   9
            3   4   5   6   7   8   9   10
            4   5   6   7   8   9   10   11
            5   6   7   8   9   10   11   12
            6   7   8   9   10   11   12   13
            7   8   9   10   11   12   13   14
            8   9   10   11   12   13   14   15
            9   10   11   12   13   14   15   16
*/
function initTwoArray() {
    var arr = new Array(10); // 创建长度为10的数组arr
    for (var i = 0; i < arr.length; i++) {
        arr[i] = new Array(8); // 给数组arr每个元素赋值长度为8的数组, 这时arr成为二维数组
        for (var j = 0; j < 8; j++) {
            arr[i][j] = i + j;
        }
    }
}

三、双重循环遍历

外层走行,内层走该行的列。用 arr[i].length 而不是写死列数,行列不齐时也不会越界:

function printArray(arr) {
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr[i].length; j++) {
            document.write(arr[i][j] + '&nbsp;&nbsp;&nbsp;')
        }
        document.write('<br/>')
    }
}

四、主对角线求和

主对角线满足 i == j。方阵时就是 a[0][0] + a[1][1] + …:

function diagonalSum(arr) {
    var sum = 0
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr[i].length; j++) {
            if (i == j) {
                sum = sum + arr[i][j]
            }
        }
    }
    document.write('sum = ' + sum)
}

五、打印下三角

下三角保留 i >= j 的格子(含对角线),其余跳过。对开头那个 4×4 示例,打印出来就是:

/*
            1
            2   4
            8   9   10
            9   12   13   15
*/
function printTriangle(arr) {
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr[i].length; j++) {
            if (i >= j) {
                document.write(arr[i][j] + '&nbsp;&nbsp;&nbsp;')
            }
        }
        document.write('<br/>')
    }
}

一句话总结:二维数组就是嵌套数组:用双重下标取值,用双重循环初始化、遍历,再用 i 与 j 的关系筛对角线或三角区域。

转载请注明来源:javascript二维数组介绍
本文链接地址:https://ai.zhousir.top/?p=3256
回复 取消