<!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 i;
for(i=0;i<=infos.length;i++){
if(infos[i][3]!='大一'){
continue;
}
document.write(infos[i][3]+"<br/>"")
}
//第一次筛选,找出都是大一的信息
for(i=0;i<=infos.length;i++){
if(infos[i][1]!='女'){
continue;
}
document.write(infos[i][1]+"<br/>")
}
//第二次筛选,找出都是女生的信息
</script>
</head>
<body>
</body>
</html>
第1个问题,数组里面单个元素用’,‘分隔,像这样
var infos=[ ['小A','女',21,'大一'], ['小B','男',23,'大三'], ['小C','男',24,'大四'], ['小D','女',21,'大一'], ['小E','女',22,'大四'], ['小F','男',21,'大一'], ['小G','女',22,'大二'], ['小H','女',20,'大三'], ['小I','女',20,'大一'], ['小J','男',20,'大三']];
然后是循环里的逻辑问题
var i; for(i=0;i<=infos.length;i++){ if(infos[i][3]!='大一'){ continue; } document.write(infos[i][3]+"<br/>"") } //第一次筛选,找出都是大一的信息 for(i=0;i<=infos.length;i++){ if(infos[i][1]!='女'){ continue; } document.write(infos[i][1]+"<br/>") } //第二次筛选,找出都是女生的信息
你这里把documet.write放错位置了,即便是要将每次筛选的结果打印出来,也应该是把documet.write放在continue前面,你写的代码反而是将不满足的结果打印出来,这2个循环也没有实现筛选的功能
这是直接判断2个条件的代码
for(var i=0;i<infos.length;i++){ if(infos[i][3]='大一'&&infos[i][1]='女'){ document.write(infos[i]+"<br/>"); } }
参考7-21你就明白了
代码改成下图即可
错误原因
1、数组声明有误,可以复习一下3-7课和3-3课
2、你把continue写在了你要执行的代码前面,在执行continue之后循环并不是接着往下运行,而是跳过这一次循环在这句“continue”之后的所有代码重新开始新的一轮循环
3、前面理解错误if判断条件错误
不用两次筛选,一次就能搞定:
for(var i=0; i<10; ++i) { if("大一"==infos[i][3] && "女"==infos[i][1]){ document.write(infos[i]+"<br/>"); } }
数组内部不要分号