<!DOCTYPE HTML><html ><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>流程控制语句</title></head><body><script type="text/javascript"> var infos=[ ['小A','女',21,'大一'], ['小B','男',23,'大三'], ['小C','男',24,'大四'], ['小D','女',21,'大一'], ['小E','女',22,'大四'], ['小E','女',22,'大四'], ['小F','男',21,'大一'], ['小G','女',22,'大二'], ['小H','女',20,'大三'], ['小I','女',20,'大一'], ['小J','男',20,'大三'] ] //第一步把之前的数据写成一个数组的形式,定义变量为 infos document.write("第一次筛选:") for(var i=0;i<infos.length;i++) if(infos[i][3]=="大一") { document.write(infos[i][0]+"、") //第一次筛选,找出都是大一的信息 } for(var j=0;j<i.length;j++) if(j[i][1]=="女") { document.write(j[i][0]) } //第二次筛选,找出都是女生的信息 </script></body></html>
2 回答
已采纳
guozhchun
TA贡献103条经验 获得超76个赞
你想从第一次循环的结果中再次循环得到你想要的结果,那么你必须保留第一循环的结果。在代码中并没有体现出你对第一循环结果的保留。这是逻辑上的错误,以下代码是语法上的错误
for(var j=0;j<i.length;j++) // i 不是一个数组,没有i.length,不知你想表达什么意思 if(j[i][1]=="女") // 上一个语句中 j 定义的应该是一个整数,这里却把 j 当成一个数组 { document.write(j[i][0]) }
以下代码是我提供的一个参考样例
<!DOCTYPE HTML> <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>流程控制语句</title> </head> <body> <script type="text/javascript"> var infos=[ ['小A','女',21,'大一'], ['小B','男',23,'大三'], ['小C','男',24,'大四'], ['小D','女',21,'大一'], ['小E','女',22,'大四'], ['小E','女',22,'大四'], ['小F','男',21,'大一'], ['小G','女',22,'大二'], ['小H','女',20,'大三'], ['小I','女',20,'大一'], ['小J','男',20,'大三'] ]; //第一步把之前的数据写成一个数组的形式,定义变量为 infos var temp = []; // 存放大一的信息的数组 var index = 0; // temp数组的下标 document.write("第一次筛选:"); for(var i=0;i<infos.length;i++) { if(infos[i][3]=="大一") { temp[index] = infos[i]; // 将对应信息放入temp数组中 index++; // 对应下标自增 document.write(infos[i][0]+"、"); //第一次筛选,找出都是大一的信息 } } document.write("<br>第二次筛选:"); //第二次筛选,找出都是女生的信息 for (var i = 0; i < index; i++) { if (temp[i][1] == "女") document.write(temp[i][0] + "、"); } </script> </body> </html>
当然,如果只是想找出所有的大一女生,有一个更简单直接的方法,对每一个项直接判断是否是大一,是否是女生。参考样例如下
<!DOCTYPE HTML> <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>流程控制语句</title> </head> <body> <script type="text/javascript"> var infos=[ ['小A','女',21,'大一'], ['小B','男',23,'大三'], ['小C','男',24,'大四'], ['小D','女',21,'大一'], ['小E','女',22,'大四'], ['小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]+"、"); } } </script> </body> </html>
display_none
TA贡献52条经验 获得超13个赞
你得设个新的数组变量来装第一次筛选的结果
var arr1=new Array();
var n=0;
for(i=0;i<infos.length;i++){
if(infos[i][3]=="大一"){
arr1[n]=infos[i];
document.write(arr1[n]+"<br/>");
n=n+1;
}
}
document.write("大一人数: "+arr1.length+"<br/>");
for(i=0;i<arr1.length;i++){
switch(arr1[i][1]){
case '女':
document.write(arr1[i]+"<br/>");
n=n+1;
}
}
添加回答
举报
0/150
提交
取消