目 录CONTENT

文章目录

二维数组

Administrator
2020-07-24 / 0 评论 / 0 点赞 / 6894 阅读 / 4538 字

二维数组

  • 在严格意义上面来讲,JavaScript没有二维数组的概念,只有多维数组的概念

  • 二维数组指的是数组当中的元素如果又是一个数组的时候,我们就把它当成是一个二维数组

二维数组的定义

各位同学请看下面的代码

var boys = ["吴港", "何陈龙", "余懿恒"]; //这是一个数组
var girls = ["程紫圆", "刘雪年", "颜若瑄"]; //这又是一数组
var students = [boys, girls]; //这就是一个二维数组

通过上面的代码,我们可以看到下面几种情况的定义

var arr1 = new Array(3);
var arr2 = new Array(3);
var arr = new Array(arr1, arr2);

继续向下走,上面的代码可以直接演变成下面的代码

var arr = new Array(new Array(3), new Array(3));

接着继续走

var arr = new Array(new Array("吴港", "何陈龙", "余懿恒"),new Array("程紫圆", "刘雪年", "颜若瑄"),new Array(3));

但是这么写 ,看起来不是很方便 ,所以我们可以进行如下方式的转换

var arr = [
    ["吴港", "何陈龙", "余懿恒"],
    ["程紫圆", "刘雪年", "颜若瑄"],
    new Array(3)
];

二维数组的特殊情况

在其它的语言里面,数组的长度是固定的,所以它是在计算机的内存里面,二维数组是一个标准的表结构。但是JavaScript的数有两人特点

  1. 不限定数据类型
  2. 不固定数长度

正是因为有了上面的两个特点,所以下面的情况也可能会出现

第一种情况

var arr = [
    ["吴港", "何陈龙", "余懿恒"],
    ["程紫圆", "刘雪年", "颜若瑄", "吴紫婷"]
]

上面的代码是合法的,因为JavaScript里面的数组没有限定长度

第二种情况

var arr1 = [
    ["吴港", "何陈龙", "余懿恒"],
    "程紫圆",
    "刘雪年"
]

上面的代码也是合法的,因为JavaScript里面的数组没有限定数据类型

第三种情况

var arr2 = [
    ["吴港", "何陈龙", "余懿恒"],
    [
        [
            ["程紫圆","梁心悦"], 
            "刘雪年"
        ], 
        ["颜若瑄", "吴紫婷"]
    ]
]

//arr2[1][1][0]
//arr2[1][0][0][0]

上面的代码里面也是合法的

二维数组的取值与赋值

我们的一维数组可以实现数据结构里面的栈,队列,链的特点,二维数组其实现的是数据结构里面的表的特点

var arr = [
    ["吴港", "何陈龙", "余懿恒"],
    ["程紫圆", "刘雪年", "颜若瑄"]
];

这一个数组在内存当中的表现形式如下

image-20200722105301506

我在取值的时候其实就可以像表一样去操作就可以了

var a =  arr[0];		//相当于获取了这个数组的第一行
var a1 = a[1];			//相当于获取当前行的第二列		得到的就是何陈龙

所以我们是可以按照一个先行后列的方式来进行的。再将上面的代码综合起来

var a1 = arr[0][1];			//这就相当于第0行第1列,得到何陈龙
var a2 = arr[1][2];			//颜若瑄

上面是取值的过程,赋值也相似,通过索引来完成

arr[1][2] = "吴紫婷";

二维数组的应用点

二维数组在日常应用过程当中,用于形容平面信息是再好不过的,例如选坐购票,例如游戏的地图等

image-20200722113128498

上面的图片信息,我们完全可以使用二维数组的方式去完成

案例与练习

  1. 现以下的数组,请将数组中的每一个元素都遍历出来,然后打印

    var stus =[
        ["张三","李四","王五","赵六",["赵聪","刘总"]],
        [18,19,20],
        "hello world",
        ["梁心悦",["龙小雨",["陈红","李洁平"]],"杨兰芳"]
    ]
    function printArr(a) {
        for (var i = 0; i < a.length; i++) {
            //a[i]就是里面的每一项
            if(Array.isArray(a[i])){
                //说明它又是一个数组了
                printArr(a[i]);
            }
            else{
                //说明a[i]不是数组
                console.log(a[i]);
            }
        }
    }
    printArr(stus);
    
0

评论区