问答详情
源自: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=new Array[['小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++){

     for(var j=0;j<4;j++){

         if(infos[i][3]=="大一") document.write(infos[i][0]+"<br/>");

     }

     }

  

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

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

     for(var j=0;j<4;j++){

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

     }

     }

 

  

</script>

</head>

<body>

</body>

</html>


提问者:努力做梦打怪兽 2015-06-19 01:20

个回答

  • 慕前端1556753
    2015-06-28 21:45:29

    <html>

       <head>

       <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>

       <title>编程练习</title>

       <script type="text/javascript">

          var myarr=[['小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<10;i++)

          {

             if(myarr[i][1]=="女" && myarr[i][3]=="大一")

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

              

           }

       </script>

       </head>

       <body>

       </body>

    </html>


  • 品茗见南山
    2015-06-19 14:14:08

    楼上正解。注释把第一次筛选和第二次分开了。

     

    所以我建议把数组赋值出来。

    //第一步把之前的数据写成一个数组的形式,定义变量为 infos
        var infos = [['小A', '女', 21, '大一'], ['小B', '男', 23, '大三'], ['小C', '男', 24, '大四'], ['小D', '女', 21, '大一'], ['小E', '女', 22, '大四'], ['小F', '男', 21, '大一'], ['小G', '女', 22, '大二'], ['小H', '女', 20, '大三'], ['小I', '女', 20, '大一'], ['小J', '男', 20, '大三']]

        //第一次筛选,找出都是大一的信息
        var dayi = new Array();
        var x = 0;
        document.write('first:<br/>');
        for (var i = 0; i < infos.length; i++) {
            if (infos[i][3] == '大一') {
                dayi[x] = infos[i];
                x++;
                document.write(infos[i]+'<br/>');
            }
        }
    document.write('second:<br/>');
        //第二次筛选,找出都是大一女生的信息
        var dayinv = new Array();
        var y = 0;
        for (var j = 0; j < dayi.length; j++) {
            if (dayi[j][1] == '女') {
                dayinv[y] = dayi[j];
                y++;
                document.write(dayi[j] + '<br/>');
            }
        }

  • 幸福的小草
    2015-06-19 12:07:11

    1. 数组定义错了,数组赋值有两种方式:一种是var infos=new Array();一种是var infos=[];您这样两种结合是不行的。。。

      解决办法:

      要么把最外层的中括号改为小括号,像这样var infos=new Array(['小A','女','21','大一'],['小B','男','23','大三'],['小C','男','24','大四'],['小D','女','21','大一'],['小E','女','22','大四'],['小F','男','21','大一'],['小G','女','22','大二'],['小H','女','20','大三'],['小I','女','20','大一'],['小J','男','20','大三']);

      要么去掉new Array,像这样var infos=[['小A','女','21','大一'],['小B','男','23','大三'],['小C','男','24','大四'],['小D','女','21','大一'],['小E','女','22','大四'],['小F','男','21','大一'],['小G','女','22','大二'],['小H','女','20','大三'],['小I','女','20','大一'],['小J','男','20','大三']]

    2. 改好数组后可以运行,但结果不对,因为您的循环  for(var j=0;j<4;j++)导致的,这个循环的作用是什么?多余了。建议捋一捋循环的过程,比如:以您的第一次筛选为例,当i=0时进入循环,然后开始j的循环,j=0时打印出符合条件infos[i][3]=="大一"的学生名字,j=1,2,3时又重复打印三次,所以结果看到4个小A之类的。我也只会讲到这么多了,呵呵,这个还是要自己慢慢去理解了,加油

    3. 第三点不是说您代码有错,只是顺便提一提,第二次筛选是在第一次筛选后的基础上进行的

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

          if(infos[i][3]=='大一'){//第一次筛选,找出都是大一的信息    

              if(infos[i][1]=='女'){//第二次筛选,找出都是女生的信息   

              document.write(infos[i][0]);

              }

          }

      }

      有不对的地方,请其他同学指教

  • 康振宁
    2015-06-19 09:52:45

    Array后面用()这个括号包含一下