为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

listerL 2016-04-01 11:59:45
<!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>
查看完整描述

2 回答

已采纳
?
guozhchun

TA贡献103条经验 获得超76个赞

你想从第一次循环的结果中再次循环得到你想要的结果,那么你必须保留第一循环的结果。在代码中并没有体现出你对第一循环结果的保留。这是逻辑上的错误,以下代码是语法上的错误

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>


查看完整回答
反对 回复 2016-04-01
?
display_none

TA贡献52条经验 获得超13个赞

你得设个新的数组变量来装第一次筛选的结果

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;
    }
    }

查看完整回答
反对 回复 2016-04-01
  • 2 回答
  • 0 关注
  • 1412 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信