梁小茹
2017-04-05 11:05
var mynum=[
['小A','女','21','大一'],
['小B','男','23','大三'],
['小C','男','24','大四'],
['小D','女','21','大一'],
['小E','女','22','大四'],
['小F','男','21','大一'],
['小G','女','22','大二'],
['小H','女','20','大三'],
['小I','女','20','大一'],
['小J','男','20','大三'],
];
var wuman=new Array();
var n=0;
document.write("其中大一有:"+"<br>")
for( var i=0;i<mynum.length;i++){
if(mynum[i][3]=="大一"){
document.write(mynum[i]+"<br>");
wuman[n]=mynum[i];
n++;
}
}
for(var n=0;n<wuman.length;n++){
if(wuman[n][1]=="女"){
document.write(wuman[n][0]+"<br>");
}
}
这里面不明白为何前面要写 var n;和后面第一步输出下面要写n++; 这个有点想不明白,因为for中有些这些啊,求大神指点
n相当于数组women的下标,数组下标从0开始的,你的代码是重新定义一个数组women存放年级是大一的学生,n++是到数组women的下一个下标
JS代码从上到下,在第一个判断语句中,数组mynum是一个二维数组,用来判断每个元素的第四个元素是否是“大一”,如果是,那么新的数组women就会添加元素。n是数组women的下标,初始值是0,每取到一个mynum[i],n的值就+1 。
也就是说,在第一次for循环中,取出的是所有大一的学生,填充到women数组中去,然后再在第二个for循环中找出women数组中的女生。
var mynum=[ ['小A','女','21','大一'], ['小B','男','23','大三'], ['小C','男','24','大四'], ['小D','女','21','大一'], ['小E','女','22','大四'], ['小F','男','21','大一'], ['小G','女','22','大二'], ['小H','女','20','大三'], ['小I','女','20','大一'], ['小J','男','20','大三'], ]; //找出所以大一女生 for(var i=0;i<mynum.length;i++){ if(mynum[i][3]=="大一"){ //如果是大一,则执行里面的判断 if(mynum[i][1]=="女"){ //如果是女,则输出mynum[i] document.write(mynum[i] + "<br>"); } } } //或者按照你的写法,, var women = array();//声明一个数组,用来装大一女生的信息 var n = 0;//声明一个变量,用来作为数组的下标 for(var i=0;i<mynum.length;i++){ if(mynum[i][3]=="大一"){ document.write("所以的大一学生:"+mynum[i]+"<br>");//输出所以大一学生 women[n]=mynum[i];// => women[0]=满足条件的大一学生 n++; //找到第一个满足条件的mynum数组元素的时候,n会变成1,然后在返回for循环继续判断 //最后得到的结果,就是将所有大一学生的信息,封装到二维数组women中去, } } for(var j=0;j<women.length;j++){ if(women[j][1]=="女"){ document.write("所有的大一女生:"+women[i]+"<br>"); } }
PS:你的第二个for循环中的n,已经在前面声明过了,尽可能用别的变量。。
n是用来统计数量的,每当查询到一条大一的记录n就加1,全部查询后,n的值就是大一学生数量的值
JavaScript进阶篇
468190 学习 · 21891 问题
相似问题
回答 3