求解 不知道错哪了 第二个筛选女的 只会显示最后一条

来源:4-10 编程练习

qq_小小_54

2017-03-18 12:57

    var infos=new Array();

   

infos=[["小A","女",21,"大一"],["小B","男",23,"大三"],["小C","男",24,"大四"],["小D","女",21,"大一"],["小E","女",22,"大四"],["小F","男",21,"大一"],["小G","女",22,"大二"],["小H","女",20,"大三"],["小I","女",20,"大一"],["小J","男",20,"大三"]];


 function er(){

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

         {

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

             {

                var zai=new Array();

                zai.push(infos[i]);

               document.write(zai+"<br>");

             }

         }

         document.write("<br>");

         

         

    for(var j=0;j<zai.length;j++)

{

    if(zai[j][1]=="女")

     {

       document.write(zai[j]+"<br>");

     }

}

 }

    

er();


写回答 关注

2回答

  • joba
    2017-03-18 13:34:53
    已采纳

    按楼主的逻辑,没改动什么代码,但是楼主你要把zai数组声明放在第一次循环外面,不然放里面的话,是每次找到一个“大一”的信息,就重新创建一个数组,到最后面,其实数组就只有一个值啦,zai.length=1呀,也就是最后面循环得到的值。

    function er(){

     var zai=new Array();

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

             {

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

                 { 

                    zai.push(infos[i]);

                  // document.write(zai+"<br>");

                 }

             }

    document.write(zai+"<br>");

             document.write("<br>"); 

        for(var j=0;j<zai.length;j++)

    {

    if(zai[j][1]=="女")

    {

      document.write(zai[j]+"<br>");

    }

    }

    }   

    er();



    qq_小小_...

    好棒

    2017-03-18 14:09:08

    共 1 条回复 >

  • 慕粉1604586815
    2017-03-18 13:14:14

    var x;
          for(x=0;x<=10;x++){
            if(infos[x][3]=="大一"){
              if(infos[x][1]=="女"){
                document.write("大一学生为:"+infos[x]+"<br>");
              } 
            }

    这样就好了

    qq_小小_...

    不是 我就是想用这样的方法试试 :先筛选出大一的 再赋值给一个新数组 然后筛选大一女生

    2017-03-18 13:28:00

    共 1 条回复 >

JavaScript进阶篇

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

468060 学习 · 21891 问题

查看课程

相似问题