打印出都是女生的姓名
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,看不懂你这个程序的意思。
但是我转念一想,别看我才学了一年半,我自认为学的也不算差。
所以我斗胆给一个结论:你这个代码,不是抄错了就是本身有问题。
还有两点:
JavaScript的数组跟C语言不同,它本身首先是一个对象,第二才是一个数组。所以不要按照之前的理解去思考问题。
想要遍历得到所有女生,我认为应该使用一维数组+对象的方式。
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个房间:
首先从一维数组开始,我要记录一下第一层楼的所有房间号码:
val rooms=[101,102,103,104,105,106];
//如果我要获取第3个房间的号码,那就是(数组索引从0开始):
var number=rooms[2];//number结果为103
数组结构本质上其实也是一块块小空间的开辟,然后放数据,我们用图表示下:
然后我们来看下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楼在最上面,没事儿,我们可把它看成是往地下开始建立的楼房~
最后的最后,总结下:
一维数组你可以看成是一层楼,里面的数据就是一个个房间;它是横向的,像一根被均分的线段,或者说是x轴
二维数组你可以看成是一栋楼,里面的数据就是一层层楼,一层层楼里又有一个个房间;它像是一个平面,或者说是由X和Y轴共同组成的数据结构
同样以此类推下去还有三维数组,它就像是由xyz三轴组成的立体结构了,最后是一个立方体
一维数组你能理解吗:
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里面根本没有二维数组,只有一维数组。所谓二维数组,不过是指元素为一维数组的数组。