努力做梦打怪兽
2015-06-19 01:20
<!DOCTYPE HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>流程控制语句</title>
<script type="text/javascript">
//第一步把之前的数据写成一个数组的形式,定义变量为 infos
var infos=new Array[['小A','女','21','大一'],['小B','男','23','大三'],['小C','男','24','大四'],['小D','女','21','大一'],['小E','女','22','大四'],['小F','男','21','大一'],['小G','女','22','大二'],['小H','女','20','大三'],['小I','女','20','大一'],['小J','男','20','大三']];
//第一次筛选,找出都是大一的信息
for(var i=0;i<infos.length;i++){
for(var j=0;j<4;j++){
if(infos[i][3]=="大一") document.write(infos[i][0]+"<br/>");
}
}
//第二次筛选,找出都是女生的信息
for(var i=0;i<infos.length;i++){
for(var j=0;j<4;j++){
if(infos[i][1]=="女") document.write(infos[i][0]+"<br/>");
}
}
</script>
</head>
<body>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<title>编程练习</title>
<script type="text/javascript">
var myarr=[['小A','女','21','大一'],['小B','男','23','大三'],
['小C','男','24','大四'],['小D','女','21','大一'],
['小E','女','22','大四'],['小F','男','21','大一'],
['小G','女','22','大二'],['小H','女','20','大三'],
['小I','女','20','大一'],['小J','男','20','大三']];
for(var i=0;i<10;i++)
{
if(myarr[i][1]=="女" && myarr[i][3]=="大一")
document.write(myarr[i][0]+"<br/>");
}
</script>
</head>
<body>
</body>
</html>
楼上正解。注释把第一次筛选和第二次分开了。
所以我建议把数组赋值出来。
//第一步把之前的数据写成一个数组的形式,定义变量为 infos
var infos = [['小A', '女', 21, '大一'], ['小B', '男', 23, '大三'], ['小C', '男', 24, '大四'], ['小D', '女', 21, '大一'], ['小E', '女', 22, '大四'], ['小F', '男', 21, '大一'], ['小G', '女', 22, '大二'], ['小H', '女', 20, '大三'], ['小I', '女', 20, '大一'], ['小J', '男', 20, '大三']]
//第一次筛选,找出都是大一的信息
var dayi = new Array();
var x = 0;
document.write('first:<br/>');
for (var i = 0; i < infos.length; i++) {
if (infos[i][3] == '大一') {
dayi[x] = infos[i];
x++;
document.write(infos[i]+'<br/>');
}
}
document.write('second:<br/>');
//第二次筛选,找出都是大一女生的信息
var dayinv = new Array();
var y = 0;
for (var j = 0; j < dayi.length; j++) {
if (dayi[j][1] == '女') {
dayinv[y] = dayi[j];
y++;
document.write(dayi[j] + '<br/>');
}
}
数组定义错了,数组赋值有两种方式:一种是var infos=new Array();一种是var infos=[];您这样两种结合是不行的。。。
解决办法:
要么把最外层的中括号改为小括号,像这样var infos=new Array(['小A','女','21','大一'],['小B','男','23','大三'],['小C','男','24','大四'],['小D','女','21','大一'],['小E','女','22','大四'],['小F','男','21','大一'],['小G','女','22','大二'],['小H','女','20','大三'],['小I','女','20','大一'],['小J','男','20','大三']);
要么去掉new Array,像这样var infos=[['小A','女','21','大一'],['小B','男','23','大三'],['小C','男','24','大四'],['小D','女','21','大一'],['小E','女','22','大四'],['小F','男','21','大一'],['小G','女','22','大二'],['小H','女','20','大三'],['小I','女','20','大一'],['小J','男','20','大三']]
改好数组后可以运行,但结果不对,因为您的循环 for(var j=0;j<4;j++)导致的,这个循环的作用是什么?多余了。建议捋一捋循环的过程,比如:以您的第一次筛选为例,当i=0时进入循环,然后开始j的循环,j=0时打印出符合条件infos[i][3]=="大一"的学生名字,j=1,2,3时又重复打印三次,所以结果看到4个小A之类的。我也只会讲到这么多了,呵呵,这个还是要自己慢慢去理解了,加油
第三点不是说您代码有错,只是顺便提一提,第二次筛选是在第一次筛选后的基础上进行的
for(i=0;i<infos.length;i++){
if(infos[i][3]=='大一'){//第一次筛选,找出都是大一的信息
if(infos[i][1]=='女'){//第二次筛选,找出都是女生的信息
document.write(infos[i][0]);
}
}
}
有不对的地方,请其他同学指教
Array后面用()这个括号包含一下
JavaScript进阶篇
468194 学习 · 21891 问题
相似问题