var arr1 = []; //新建一个数组的原因是不和infos重合吗? var n = 0; //为什么要声明一个n变量,并且赋值为0? for(var i=0;i<infos.length;i++){ if( infos[i][3] == "大一" ){ //infos[i][3]的含义是不是指“数组索引号i与3”? arr1[n] = infos[i]; document.write(arr1[n]+"<br/>"); n=n+1; } }
用注释写在语言里
全部js代码与注释如下
// 第一步把之前的数据写成一个数组的形式,定义变量为 infos var infos = [ ['小A','女',21,'大一'], ['小B','男',23,'大三'], ['小C','男',24,'大四'], ['小D','女',21,'大一'], ['小E','女',22,'大四'], ['小F','男',21,'大一'], ['小G','女',22,'大二'], ['小H','女',20,'大三'], ['小I','女',20,'大一'], ['小J','男',20,'大三']]; var arr = []; // 定义一个数组 // 第一次筛选,找出都是大一的信息(数组arr1) for(var i=0;i<infos.length;i++){ if( infos[i][3] == "大一" ){ // 筛选所有大一学生信息 arr.push(infos[i]); // 将其置于新数组 } } // 第二次筛选,找出都是女生的信息(并打印出来) for(var i=0; i<arr.length;i++){ if(arr[i][1] == '女'){ // 筛选新数组中的所有女生 document.write(arr[i][0]+"<br/>"); // 打印姓名 } }
infos[i][3] 是个二维数组, 你可以把它看作是个张Excel表格,其中i决定的是行,3则代表列,整个合起来指向一个单元格。需要注意的是在索引值默认都是从0开始的(这也是n的初始值为什么通常是0的原因),所以这里的3其实就是第4列。至于if中的条件,你需要分析观察infos二维数组内容结构。
infos二维数组看成表,则表示一个10行4列的表,其中每列依次表示为:姓名,性别,年龄,年级。理解这些,你就可以很清晰的知道infos[i][3]指获取年级。
若还不能理解,打开Excel表比划比划。不明白if 是你需要加强数组学习。有时候慢就是快……
if中的条件是指的什么意思呢