为了账号安全,请及时绑定邮箱和手机立即绑定

请教大家,为什么我写的代码运行不出来?没有输出。

<!DOCTYPE  HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>流程控制语句</title>
<script type="text/javascript">
 //第一步把之前的数据写成一个数组的形式,定义变量为 infos
 var infos=new Array();
 infos[0]=['小A','女',21,'大一'];
 infos[1]=['小B','男',23,'大三'];
 infos[2]=['小C','男',24,'大四'];
 infos[3]=['小D','女',21,'大一'];
 infos[4]=['小E','女',22,'大四'];
 infos[5]=['小F','男',21,'大一'];
 infos[6]=['小G','女',22,'大二'];
 infos[7]=['小H','女',20,'大三'];
 infos[8]=['小I','女',20,'大一'];
 infos[9]=['小J','男',20,'大三'];
 document.write(infos);
 //第一次筛选,找出都是大一的信息
document.write("所有大一学生的信息:"+"<br/>");
var arr=new Array();
var n=0;
 for(var i=0;i<infos.length;i++){
     if (infos[i][3])=="大一"){
         document.write(infos[i][0]+"<br/>");
         arr[n]=infos[i][0];
         n++;
     }
 }  
 //第二次筛选,找出都是女生的信息
  document.write("所有的女生信息:"+"<br/>");
 for (n=0;n<arr.length;n++){
     if (infos[n][1])=="女"){
         document.write(arr[n][0]+"<br/>");
        }
 }
</script>
</head>
<body>
</body>
</html>

正在回答

4 回答

语法错误

if (infos[i][3])=="大一")
if (infos[n][1])=="女")

多了一个反括号。

而且你这个程序逻辑有问题,应该将整个数组赋值给 arr[n]

arr[n]=infos[i][0]; => arr[n]=infos[i];

然后循环 arr ,判断 arr 的性别。

0 回复 有任何疑惑可以回复我~
#1

heyleta 提问者

真是太谢谢你了,arr[n]=infos[i][0]; 这个是错了,但能给我解释下理论上为什么错了吗,自己很容易混淆。
2016-11-20 回复 有任何疑惑可以回复我~

你的arr数组是一维数组你想输出arr[n][0]当然输出不了啊,你把第一次筛选时候的arr[n]=infos[i][0];改成arr[n]=infos[i];

然后第二次筛选的时候的if (infos[n][1])=="女")改成if (arr[n][1])=="女")就能通过arr输出你要的数据

2 回复 有任何疑惑可以回复我~

你这样 这样定义二维列表不规范我觉得,而且这样的思路就算能打印出来也不能筛选出大一女生,会筛选出两批人,一批大一,一批女生。你可以参考下别人的代码,看懂理解后,在尝试自己编写,我也是新手,多看几个模板思路在自己操作,一起加油。

0 回复 有任何疑惑可以回复我~
#1

heyleta 提问者

嗯谢谢,我后来按照同学们找出来的错误修改后可以显示了,你也可以一起理解下这个程序。虽然有点复杂
2016-11-20 回复 有任何疑惑可以回复我~

你看下那节底下其他同学的代码,很精简,没有你这么麻烦,判断条件就一句话,if(infos[n][1]="女"&&infos[n][3]=="大一")

0 回复 有任何疑惑可以回复我~
#1

kkkys

少了个"="
2016-11-20 回复 有任何疑惑可以回复我~
#2

heyleta 提问者

题目要求不是要分两次按顺序筛选吗?
2016-11-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请教大家,为什么我写的代码运行不出来?没有输出。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信