qq_鹿苑今生晗情此世_0
2018-09-30 15:35
<!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,'大四'],
['小C','男',24,'大四'],
['小D','女',21,'大一'],
['小E','女',22,'大四'],
['小F','男',21,'大一'],
['小G','女',22,'大二'],
['小H','女',20,'大三'],
['小I','女',20,'大一'],
['小J','男',20,'大三']]
//第一次筛选,找出都是大一的信息
var myarr=new Array();
for(var i=0; i<infos.length;i++){
if(infos[i][3]=='大一'){
myarr[i]=infos[i];
document.write(myarr[i]);
}
}
//第二次筛选,找出都是女生的信息
for(var i=0; i<myarr.length;i++){
if(myarr[i][1]=='女'){
document.write(myarr[i][0]+"<br/>");
}
}
</script>
</head>
<body>
</body>
</html>
问题出现在
myarr[i]=infos[i];
这里其实是将数组myarr的值赋为
[['小A','女',21,'大一'],null,null, ['小D','女',21,'大一'],null, ['小F','男',21,'大一'],null,null,['小I','女',20,'大一']]长度为9
这导致在下面进行第二次筛选的时候,myarr[1][1]值不存在,即遇到错误,也就不会进行后续的循环了
所以创建一个新变量,使数组myarr的变量和infos的变量不相同是必须的
因为你的myarr[]不在上一个循环里,myarr[]只是“局部变量”,并不是全局变量,
for(var i=0; i<infos.length; i++){
if(infos[i][3]=='大一'){
arr[i]=infos[i];
document.write(arr[i]);
for(var j=0;j<arr.length;j++){
if(arr[j][1]=='女生'){
document.write(arr1[j][0]+"<br/>");
}
}
}
}
参考一下
改成这样就好了
for(var i=0; i<infos.length;i++){
if(infos[i][1]=='女'){
document.write(infos[i][0]+"<br/>");
}
}
循环条件写错了吧 按照第一次的循环条件是可以的
for(var i=0; i<infos.length; i++){
if(infos[i][1]=='女'){
myarr[i]=infos[i];
document.write(myarr[i]+"<br/>");
}
}
JavaScript进阶篇
468061 学习 · 21891 问题
相似问题