问答详情
源自: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=[

     ['小A','女',21,'大一'],

            ['小B','男',23,'大三'],

            ['小C','男',24,'大四'],

            ['小D','女',21,'大一'],

            ['小E','女',22,'大四'],

            ['小F','男',21,'大一'],

            ['小G','女',22,'大二'],

            ['小H','女',20,'大三'],

            ['小I','女',20,'大一'],

            ['小J','男',20,'大三']];

 //第一次筛选,找出都是大一的信息

 var arr=new Array();

  var n=0;

 for(var i=0;i<=infos.length;i++){

     if(infos[i][3]=='大一'){

         document.write(infos[i]+"<br>")

     arr[n]=infos[i];

     n++;

     }

 }

 //第二次筛选,找出都是女生的信息

 document.write("<br>"+"第二次筛选出来的"+"<br>");

 for(var n=0;n<arr.length;n++){

 if(arr[n][1]=='女'){

  document.write(arr[n][0]+"<br>");

 }

 }

</script>

</head>

<body>

</body>

</html>


提问者:Mr丶Jia 2016-12-27 21:51

个回答

  • Change_32514
    2016-12-27 23:33:12
    已采纳

    多了个等号还真是影响挺大的。第一次筛选的条件中应该为i<infos.length;把等号去掉就可以了。

    PS:如果是i<=infos.length的话(此处length为10),由循环条件可知,i=10的时候会继续执行一次i++,也就是说存在i=11的情况,但是infos数组中并没有第11个元素,这个时候输出结果document.write(infos[11])将会是undefined。而且在arr[n]=infos[i];这一步也用了i,既然info[11]为undefined,那么arr[n]在i=11的时候就没意义了,就是说这个循环实际是存在错误的,在JS中某一部分出错的话可能会影响到下边的代码,这个你可以试一下,按你原本的程序,在第一次筛选那部分代码的后面随便加个document.write('随便输'),窗口是都不会显示的。

    总之吧,以后写循环条件的时候要多注意些。

  • 开心的乐乐爸
    2016-12-27 22:35:20

    哪里不懂提出来,告诉我,我再给你讲讲

  • 开心的乐乐爸
    2016-12-27 22:34:00

    continue不满足条件的话,下面代码不执行,直接进入下一次循环

  • 开心的乐乐爸
    2016-12-27 22:32:56

    for(var i=0;i<infos.length;i++){

         //第一次筛选,找出都是大一的信息

         if(infos[i][3] == "大一"){

             //第二次筛选,找出都是女生的信息

             if(infos[i][1] == "女"){

                 document.write(infos[i][0]+"<br/>");

             }

         }else{

             continue;

         }

     }

    循环选择判断

  • 开心的乐乐爸
    2016-12-27 22:32:21

    var infos = [

        

        ['小A','女',21,'大一'],

        ['小B','男',23,'大三'],

        ['小C','男',24,'大四'],

        ['小D','女',21,'大一'],

        ['小E','女',22,'大四'],

        ['小F','男',21,'大一'],

        ['小G','女',22,'大二'],

        ['小H','女',20,'大三'],

        ['小I','女',20,'大一'],

        ['小J','男',20,'大三']

     ];

    二位数组

  • 死了3239144
    2016-12-27 22:23:16

    我知道大概看了看这节。大概明白讲了个毛。不太会。帮不了忙。-  -不明白为啥、你第一次大一用infos第2次女要用arr= =不明觉厉、

  • 死了3239144
    2016-12-27 22:19:48

    if(arr[n][1]=='女'){

      document.write(arr[n][0]+"<br>");

     }

    我看他们的没有【0】