Mr丶Jia
2016-12-27 21:51
<!DOCTYPE HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>流程控制语句</title>
<script type="text/javascript">
//第一步把之前的数据写成一个数组的形式,定义变量为 infos
var infos=[
['小A','女',21,'大一'],
['小B','男',23,'大三'],
['小C','男',24,'大四'],
['小D','女',21,'大一'],
['小E','女',22,'大四'],
['小F','男',21,'大一'],
['小G','女',22,'大二'],
['小H','女',20,'大三'],
['小I','女',20,'大一'],
['小J','男',20,'大三']];
//第一次筛选,找出都是大一的信息
var arr=new Array();
var n=0;
for(var i=0;i<=infos.length;i++){
if(infos[i][3]=='大一'){
document.write(infos[i]+"<br>")
arr[n]=infos[i];
n++;
}
}
//第二次筛选,找出都是女生的信息
document.write("<br>"+"第二次筛选出来的"+"<br>");
for(var n=0;n<arr.length;n++){
if(arr[n][1]=='女'){
document.write(arr[n][0]+"<br>");
}
}
</script>
</head>
<body>
</body>
</html>
多了个等号还真是影响挺大的。第一次筛选的条件中应该为i<infos.length;把等号去掉就可以了。
PS:如果是i<=infos.length的话(此处length为10),由循环条件可知,i=10的时候会继续执行一次i++,也就是说存在i=11的情况,但是infos数组中并没有第11个元素,这个时候输出结果document.write(infos[11])将会是undefined。而且在arr[n]=infos[i];这一步也用了i,既然info[11]为undefined,那么arr[n]在i=11的时候就没意义了,就是说这个循环实际是存在错误的,在JS中某一部分出错的话可能会影响到下边的代码,这个你可以试一下,按你原本的程序,在第一次筛选那部分代码的后面随便加个document.write('随便输'),窗口是都不会显示的。
总之吧,以后写循环条件的时候要多注意些。
哪里不懂提出来,告诉我,我再给你讲讲
continue不满足条件的话,下面代码不执行,直接进入下一次循环
for(var i=0;i<infos.length;i++){
//第一次筛选,找出都是大一的信息
if(infos[i][3] == "大一"){
//第二次筛选,找出都是女生的信息
if(infos[i][1] == "女"){
document.write(infos[i][0]+"<br/>");
}
}else{
continue;
}
}
循环选择判断
var infos = [
['小A','女',21,'大一'],
['小B','男',23,'大三'],
['小C','男',24,'大四'],
['小D','女',21,'大一'],
['小E','女',22,'大四'],
['小F','男',21,'大一'],
['小G','女',22,'大二'],
['小H','女',20,'大三'],
['小I','女',20,'大一'],
['小J','男',20,'大三']
];
二位数组
我知道大概看了看这节。大概明白讲了个毛。不太会。帮不了忙。- -不明白为啥、你第一次大一用infos第2次女要用arr= =不明觉厉、
if(arr[n][1]=='女'){
document.write(arr[n][0]+"<br>");
}
我看他们的没有【0】
JavaScript进阶篇
468061 学习 · 21891 问题
相似问题
回答 4
回答 5
回答 3
回答 2
回答 2