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

运行不出来,为什么呀?

<!DOCTYPE  HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>流程控制语句</title>
<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,'大三')];
 //第一步把之前的数据写成一个数组的形式,定义变量为 infos
 var arr=[];
 var n=0;
 for(var i=0;i<=infos.length;i++){
    if(infos[i][3]=="大一"){
        arr[n]=infos[i];
        document.write(arr[n]+"br/");
        n=n+1;
    }
 }
 document.write("大一人数:"+arr.length+"br/");
 
 //第一次筛选,找出都是大一的信息
 for(var n=0;n<arr.length;n++){
    if(arr[n][1]=='女'){
        document.write("arr[n][0]"+"br/");
    }
 }
 
 //第二次筛选,找出都是女生的信息
 
 
 
</script>
</head>
<body>
</body>
</html>

正在回答

1 回答

1、二维数组里的内容应该用[]包括,而不是()

2、换行要写为<br/>,不要把<>忘了

3、第一个for循环,判定条件改为i<infos.length,不能等于,等于的话数组越界。

<!DOCTYPE  HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>流程控制语句</title><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,'大三']];    
    //第一步把之前的数据写成一个数组的形式,定义变量为 
    infos var arr=[]; 
    var n=0;  
    //第一次筛选,找出都是大一的信息     
    for(var i=0;i<infos.length;i++){    
        if(infos[i][3]=="大一"){        
            arr[n]=infos[i];        
            document.write(arr[n]+"<br/>");       
             n=n+1;   
         } 
    }  
    document.write("大一人数:"+arr.length+"<br/>"); 
    for(var n=0;n<arr.length;n++){    
        if(arr[n][1]=='女'){        
          document.write(arr[n][0]+"<br/>");    
        }  
    }
    </script>
    </head>
    <body>
    </body>
  </html>


1 回复 有任何疑惑可以回复我~
#1

T松子

17行的infos差行了,你懂得~~~
2018-08-24 回复 有任何疑惑可以回复我~
#2

qq_欣然_1 提问者

回复 T松子我改了,运行出来了,谢谢啦!
2018-08-24 回复 有任何疑惑可以回复我~
#3

T松子 回复 qq_欣然_1 提问者

没事,一起学习@_@互相帮忙
2018-08-24 回复 有任何疑惑可以回复我~
#4

PengGuo

为什么把你的代码里面的"n"全部换成“i”后,输出的结果就只胡“小A”了? 在第一次筛选时,不能把arr[n]=infos[i]这一句直接写成arr[i]=infos[i]吗?
2018-10-22 回复 有任何疑惑可以回复我~
#5

PengGuo

你好,你在第一次筛选时,在声明变量 var=arr[]时,这里要声明一个数组变量,为什么一定要加一个“[]”,不可以只写“var=arr”吗?
2018-10-22 回复 有任何疑惑可以回复我~
#6

T松子 回复 PengGuo

infos是一个二维数组,声明“var arr=[];”数组(由于保存的也是一维数组,所以arr是一个二维数组),是用来保存Infos里的符合条件的元素(符合条件的不止一个);如果声明为var arr;它是一个变量,只能保存一个数据,不能保存所有的内容。还有上一个问题,如果把n全部换成i,那么在筛选的时候,n就不是从0依次递增了,会因为筛选的原因不规则递增,读取的时候会很麻烦,你可以把所有n换成除i以外的其他变量,比如j,k,只要不是用于循环的i即可。如果哪一句还有点不明白,再问就行啦~
2018-10-23 回复 有任何疑惑可以回复我~
#7

PengGuo

非常感谢,第一次学习这个。
2018-10-23 回复 有任何疑惑可以回复我~
#8

PengGuo 回复 T松子

之前我以为把n换成i 后,重新的数组会重新把标号编写成:0、1、2、3、4、5.....确实,如果新的数组的标号还是之前数组的标号的话 那新数组标号就是不规律的了,后面如果再引用的话就相当不方便
2018-10-23 回复 有任何疑惑可以回复我~
查看5条回复

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468044    人
  • 解答问题       21891    个

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

进入课程

运行不出来,为什么呀?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信