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

筛选了大一的之后,女生为什么筛选不出来

<script type="text/javascript">

 //第一步把之前的数据写成一个数组的形式,定义变量为 infos
var myarray = [['小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 i,j;
 //第一次筛选,找出都是大一的信息
 document.write("大一的有:"+"<br>");
for(i=0;i<myarray.length;i++){
     if(myarray[i][3]=='大一'){
         arr[j] = myarray[i];
         document.write(arr[j]+"<br>");
     }
 }
 document.write("所有是大一女生的名字:"+"<br>");
 //第二次筛选,找出都是女生的信息
for(j=0;j<arr.length;j++){
     if(arr[j][1]=='女'){
         document.write(arr[j]+"<br>");
     }
 }
</script>

提问者:啊咧123 2017-03-22 20:44

个回答

  • qq_15上位机乔月旺_03850557
    2017-03-23 09:13:20
    已采纳


          首先:你的问题出在:arr[j] = myarray[i];上,只要有myarray[i]符合条件,arr[j]就会去接收,但j没有实现自 增,所有arr[j]背不断赋予新值,所以最后arr[j]y也只是记录一个值。

          其次:你没有给j赋初值,未使用值来声明的变量,其值实际上是 undefined,你可以这样试试看:    document.write(arr[j]+"<br>"+j);,看看j是多少。你就会知道,为啥你第二次筛选没有任何内容输出。 

     正确代码如下,仅代表个人观点,喜欢就好。

     

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

     var arr=new Array();

     var j=0;

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

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

          document.write("大一的有:"+infos[i]+"<br>")

          arr[j]=infos[i];

          j++;

         }

      }

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

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

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

               document.write("结果为"+arr[j]+"<br>");

           }

       }


  • qq_FjY雨月_03840602
    2017-03-22 21:53:34

    j没有赋初值和自增,代码有些冗杂。

    <script type="text/javascript">
     var infos = [
      ['小A','女',21,'大一'],
      ['小B','男',23,'大三'],
      ['小C','男',24,'大四'],
      ['小D','女',21,'大一'],
      ['小E','女',22,'大四'],
      ['小F','男',21,'大一'],
      ['小G','女',22,'大二'],
      ['小H','女',20,'大三'],
      ['小I','女',20,'大一'],
      ['小J','男',20,'大三']
      ];
    for(var i = 0; i < infos.length; i++) {
     if(infos[i][3] == "大一" && infos[i][1] == "女") {
      document.write(infos[i][0] + "<br />");
     }
    }
    </script>

  • 种在南瓜边边上的草菇
    2017-03-22 21:27:32

    for(i=0;i<myarray.length;i++){
         if(myarray[i][3]=='大一'){
             arr[j] = myarray[i];
             document.write(arr[j]+"<br>");
         }
     }

    你这边这个j都没有定义循环

  • Amoursw
    2017-03-22 21:19:01

    赋值的J没有回归到0,也没有进行累加

  • 卧龙绝圣
    2017-03-22 21:11:48

    j没有初始化和自增

     var i,j=0;
     //第一次筛选,找出都是大一的信息
     document.write("大一的有:"+"<br>");
    for(i=0;i<myarray.length;i++){
         if(myarray[i][3]=='大一'){
             arr[j] = myarray[i];
             document.write(arr[j]+"<br>");
    		 j++;
         }
     }