问答详情
源自:4-10 编程练习

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

<!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>

提问者:heyleta 2016-11-20 20:43

个回答

  • 宋匿
    2016-11-20 21:16:54
    已采纳

    语法错误

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

    多了一个反括号。

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

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

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

  • Frank__lin
    2016-11-20 21:22:58

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

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

  • 唐林l
    2016-11-20 21:19:56

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

  • kkkys
    2016-11-20 21:07:13

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