二维数组
-
在严格意义上面来讲,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的数有两人特点
- 不限定数据类型
- 不固定数长度
正是因为有了上面的两个特点,所以下面的情况也可能会出现
第一种情况
var arr = [
["吴港", "何陈龙", "余懿恒"],
["程紫圆", "刘雪年", "颜若瑄", "吴紫婷"]
]
上面的代码是合法的,因为JavaScript里面的数组没有限定长度
第二种情况
var arr1 = [
["吴港", "何陈龙", "余懿恒"],
"程紫圆",
"刘雪年"
]
上面的代码也是合法的,因为JavaScript里面的数组没有限定数据类型
第三种情况
var arr2 = [
["吴港", "何陈龙", "余懿恒"],
[
[
["程紫圆","梁心悦"],
"刘雪年"
],
["颜若瑄", "吴紫婷"]
]
]
//arr2[1][1][0]
//arr2[1][0][0][0]
上面的代码里面也是合法的
二维数组的取值与赋值
我们的一维数组可以实现数据结构里面的栈,队列,链的特点,二维数组其实现的是数据结构里面的表的特点
var arr = [
["吴港", "何陈龙", "余懿恒"],
["程紫圆", "刘雪年", "颜若瑄"]
];
这一个数组在内存当中的表现形式如下
我在取值的时候其实就可以像表一样去操作就可以了
var a = arr[0]; //相当于获取了这个数组的第一行
var a1 = a[1]; //相当于获取当前行的第二列 得到的就是何陈龙
所以我们是可以按照一个先行后列的方式来进行的。再将上面的代码综合起来
var a1 = arr[0][1]; //这就相当于第0行第1列,得到何陈龙
var a2 = arr[1][2]; //颜若瑄
上面是取值的过程,赋值也相似,通过索引来完成
arr[1][2] = "吴紫婷";
二维数组的应用点
二维数组在日常应用过程当中,用于形容平面信息是再好不过的,例如选坐购票,例如游戏的地图等
上面的图片信息,我们完全可以使用二维数组的方式去完成
案例与练习
-
现以下的数组,请将数组中的每一个元素都遍历出来,然后打印
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);
评论区