问答详情
源自: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,'大四'],

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

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

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

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

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

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

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

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

 

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

 var myarr=new Array();

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

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

         myarr[i]=infos[i];

         document.write(myarr[i]);

     }

 }

  

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

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

     if(myarr[i][1]=='女'){

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

     }

 }

 

  

</script>

</head>

<body>

</body>

</html>


提问者:qq_鹿苑今生晗情此世_0 2018-09-30 15:35

个回答

  • 蒼晨
    2018-10-16 16:12:12

    问题出现在

    myarr[i]=infos[i];

    这里其实是将数组myarr的值赋为

    [['小A','女',21,'大一'],null,null, ['小D','女',21,'大一'],null, ['小F','男',21,'大一'],null,null,['小I','女',20,'大一']]长度为9


    这导致在下面进行第二次筛选的时候,myarr[1][1]值不存在,即遇到错误,也就不会进行后续的循环了

    所以创建一个新变量,使数组myarr的变量和infos的变量不相同是必须的

  • 慕尼黑0309455
    2018-10-12 17:02:54

    因为你的myarr[]不在上一个循环里,myarr[]只是“局部变量”,并不是全局变量,

     for(var i=0; i<infos.length; i++){
         
        if(infos[i][3]=='大一'){
            
            arr[i]=infos[i];
            
            document.write(arr[i]);
            
        for(var j=0;j<arr.length;j++){
        if(arr[j][1]=='女生'){
            document.write(arr1[j][0]+"<br/>");
        }
     }
        }
     }

    参考一下

  • 十里_o_
    2018-10-08 11:15:52

    改成这样就好了   

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

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

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

         }

     }


  • 沫舆
    2018-09-30 16:17:27

    循环条件写错了吧 按照第一次的循环条件是可以的

  • 沫舆
    2018-09-30 16:16:10

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

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

             myarr[i]=infos[i];

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

         }

     }