哪位大神看看哪里错了,第二次筛选不出来

来源:4-10 编程练习

Mr丶Jia

2016-12-27 21:51

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


写回答 关注

7回答

  • 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('随便输'),窗口是都不会显示的。

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

    Mr丶Jia

    非常感谢!

    2016-12-28 10:17:50

    共 1 条回复 >

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

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

    共 1 条回复 >

  • 开心的乐乐爸
    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= =不明觉厉、

    Mr丶Jia

    谢谢!

    2016-12-28 10:19:43

    共 1 条回复 >

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

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

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

     }

    我看他们的没有【0】

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468061 学习 · 21891 问题

查看课程

相似问题