首页 > 最近刚学javascript,一直不是很理解二维数组,有大神能给我讲一下这个二维数组的意思吗?

最近刚学javascript,一直不是很理解二维数组,有大神能给我讲一下这个二维数组的意思吗?

打印出都是女生的姓名

var infos=[
<script type="text/javascript">
var infos=[["小A","女",21,"大一"],["小B","男",23,"大三"],["小C","男",24,"大四"],["小D","女",21,"大一"],["小E","女",22,"大四"],["小F","男",21,"大一"],["小G","女",22,"大二"],["小H","女",20,"大三"],["小I","女",20,"大一"],["小J","男",20,"大三"]];
 //第一步把之前的数据写成一个数组的形式,定义变量为 infos
 for(var i=0;i<infos.length;i++){

 if(infos[i][3]=='大一'&&infos[i][1]=='女'){

 document.write(infos[i][0]+"<br/>");

   }

 }

这个什么i,infos[i][3]怎么去理解?


一维数组理解吗?二维和一维是类似的。infos是数组的名字,i就是索引,从0开始,到n-1,比如一个有n个元素的数组,info[0]代表的就是第一个元素,infos[n-1]就代表第n-1个元素


不好意思,小弟学了1年半的JavaScript,看不懂你这个程序的意思。

但是我转念一想,别看我才学了一年半,我自认为学的也不算差。

所以我斗胆给一个结论:你这个代码,不是抄错了就是本身有问题。

还有两点:

  1. JavaScript的数组跟C语言不同,它本身首先是一个对象,第二才是一个数组。所以不要按照之前的理解去思考问题。

  2. 想要遍历得到所有女生,我认为应该使用一维数组+对象的方式。

var stus = [{sex: female, name: hanmeimei, grade: "大一"}, {sex: male, name: lilei, grade: "大二"}];
stus.forEach((stu) => {
    if(stu.grade=='大一' && stu.sex=='女')
    {
        document.write(stu.name +"<br/>");
    }
});

以上。


你改了问题的描述,我觉得你此时应该明白了问题的答案。

我再次依然表示:这个地方最好是用一位数组+对象。这样更像JSON的方式。


var 1d_array_1 = ['李磊', '韩梅梅']; //一维数组
var 1d_array_2 = ['阿大', '阿二']; //一维数组

var 2d_array = [1d_array_1, 1d_array_2]; //二维数组

这个例子有点眼熟,好像是慕课网上的。。
用个比喻来解释下吧,我把一维数组比喻成一层楼的N个房间,二维数组比喻成N层楼的N个房间:

  1. 首先从一维数组开始,我要记录一下第一层楼的所有房间号码:

val rooms=[101,102,103,104,105,106];
//如果我要获取第3个房间的号码,那就是(数组索引从0开始):
var number=rooms[2];//number结果为103

数组结构本质上其实也是一块块小空间的开辟,然后放数据,我们用图表示下:

  1. 然后我们来看下2维数组。现在一层楼的房间已经不满足我了,我要盖楼层,三层小洋房~
    之前一层楼有6个房间,现在我要盖3层,那就是18个房间啦,怎么形象表示好呢?这时候就用到了2维数组:

var rooms=
[
    [101,102,103,104,105,106],
    [201,202,203,204,205,206],
    [301,302,303,304,305,306]
];
//如果我要获取第3层楼的第4个房间的号码,怎么办呢:
//首先获取到楼层,数组索引是从0开始的,所以索引为2的楼层其实就是第三层楼,这时候floor拿到的值就是[301,302,303,304,305,306]
var floor=rooms[2];

//然后,我再拿到第这层楼的第4个房间号,同样索引是从0开始:
var number=floor[3];//number结果为304

//最后呢,我们为了书写方便,就写成下面的形式
number=rooms[2][3];//number结果同样是304

上图(灵魂画风):

当然,和现实中的楼层有点相反,现实中应该是3楼在最上面,没事儿,我们可把它看成是往地下开始建立的楼房~
最后的最后,总结下:


一维数组你能理解吗:

var arr = [1, 2, 3, 4, 5];
console.log(arr[3]); // 打印第3个元素

那么,如果元素不是1、2、3...这些数字,而是数组呢。比如:

var arr = [[1, 2, 3], ['a', 'b', 'c'], [true, false]];

怎么理解?还不是一样,比如要取出'c',那就是取第1个元素的第2个元素啊:

arr[1][2];

实际上,JS里面根本没有二维数组,只有一维数组。所谓二维数组,不过是指元素为一维数组的数组。

【热门文章】
【热门文章】