猿问

我想从第一次for循坏的结果中再循坏出第二次结果,想问下出啥问题

<!DOCTYPE  HTML>

<html >

<head>

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

<title>流程控制语句</title>

</head>

<body>

<script type="text/javascript">

  var infos=[

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

            ['小B','男',23,'大三'], 

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

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

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

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

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

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

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

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

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

            ] //第一步把之前的数据写成一个数组的形式,定义变量为 infos

            document.write("第一次筛选:")

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

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

            {

                        document.write(infos[i][0]+"、") //第一次筛选,找出都是大一的信息

            }

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

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

           {

                        document.write(j[i][0])

           }

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

 

 

  

</script>

</body>

</html>


listerL
浏览 1413回答 2
2回答

guozhchun

你想从第一次循环的结果中再次循环得到你想要的结果,那么你必须保留第一循环的结果。在代码中并没有体现出你对第一循环结果的保留。这是逻辑上的错误,以下代码是语法上的错误for(var j=0;j<i.length;j++)  // i 不是一个数组,没有i.length,不知你想表达什么意思  if(j[i][1]=="女")           // 上一个语句中 j 定义的应该是一个整数,这里却把 j 当成一个数组  {    document.write(j[i][0])  }以下代码是我提供的一个参考样例<!DOCTYPE  HTML> <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>流程控制语句</title> </head> <body> <script type="text/javascript">   var infos=[             ['小A','女',21,'大一'],             ['小B','男',23,'大三'],              ['小C','男',24,'大四'],             ['小D','女',21,'大一'],             ['小E','女',22,'大四'],             ['小E','女',22,'大四'],             ['小F','男',21,'大一'],             ['小G','女',22,'大二'],             ['小H','女',20,'大三'],             ['小I','女',20,'大一'],             ['小J','男',20,'大三']             ]; //第一步把之前的数据写成一个数组的形式,定义变量为 infos             var temp = [];   // 存放大一的信息的数组             var index = 0;   // temp数组的下标             document.write("第一次筛选:");             for(var i=0;i<infos.length;i++)             {                 if(infos[i][3]=="大一")                 {                     temp[index] = infos[i];    // 将对应信息放入temp数组中                     index++;                   // 对应下标自增                     document.write(infos[i][0]+"、"); //第一次筛选,找出都是大一的信息                 }             }             document.write("<br>第二次筛选:");             //第二次筛选,找出都是女生的信息             for (var i = 0; i < index; i++)             {                 if (temp[i][1] == "女")                     document.write(temp[i][0] + "、");             }    </script> </body> </html>当然,如果只是想找出所有的大一女生,有一个更简单直接的方法,对每一个项直接判断是否是大一,是否是女生。参考样例如下<!DOCTYPE  HTML> <html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>流程控制语句</title> </head> <body> <script type="text/javascript">   var infos=[             ['小A','女',21,'大一'],             ['小B','男',23,'大三'],              ['小C','男',24,'大四'],             ['小D','女',21,'大一'],             ['小E','女',22,'大四'],             ['小E','女',22,'大四'],             ['小F','男',21,'大一'],             ['小G','女',22,'大二'],             ['小H','女',20,'大三'],             ['小I','女',20,'大一'],             ['小J','男',20,'大三']             ] //第一步把之前的数据写成一个数组的形式,定义变量为 infos                         for(var i = 0; i < infos.length; i++)             {                 if((infos[i][3] == "大一") && (infos[i][1] == "女"))                 {                       document.write(infos[i][0]+"、");                  }             }    </script> </body> </html>

display_none

你得设个新的数组变量来装第一次筛选的结果var arr1=new Array();var n=0;for(i=0;i<infos.length;i++){    if(infos[i][3]=="大一"){        arr1[n]=infos[i];        document.write(arr1[n]+"<br/>");        n=n+1;    }    }    document.write("大一人数: "+arr1.length+"<br/>");for(i=0;i<arr1.length;i++){    switch(arr1[i][1]){        case '女':                document.write(arr1[i]+"<br/>");        n=n+1;    }    }
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答