我知道正确的编程的方法,我想知道的是原因。按道理来说此时的arr1[]有十个值,其中四个有值,其余六个未定义,那么为什么第二个循环只能输出一个值?难道循环里数组索引到空值就自动停止了?<!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,'大四'], ['小C','男',24,'大四'], ['小D','女',21,'大一'], ['小E','女',22,'大四'], ['小F','男',21,'大一'], ['小G','女',22,'大二'], ['小H','女',20,'大三'], ['小I','女',20,'大一'], ['小J','男',20,'大三']]; //第一步把之前的数据写成一个数组的形式,定义变量为 infos var arr1=[]; var n=0; for (var i=0;i<infos.length;i++){ if (infos[i][3]=="大一"){ arr1[n]=infos[i]; document.write(arr1[n]+"<br/>") } n=n+1; } document.write("大一人数: "+arr1.length+"<br/>"); //第一次筛选,找出都是大一的信息for (var i=0;i<arr1.length;i++){ if (arr1[i][1]=="女"){ document.write(arr1[i][0]+"<br/>") } } //第二次筛选,找出都是女生的信息</script></head><body></body></html>
1 回答
已采纳
李晓健
TA贡献1036条经验 获得超461个赞
for (var i=0;i<infos.length;i++){ if (infos[i][3]=="大一"){ //这里不能像你那么写 arr1.push(infos[i]); document.write(infos[i]+"<br/>") } n=n+1; }
你那么写的话,新数组的长度会是10,里面有几个值都是undefined, 然后你在后面判断是不是女生时 arr1[i][1]=="女" ; arr1[i]就会等于undefined ,然后你再取二个值,也就是 arr1[i][1] 就相当于 undefined[1] 就报错了
添加回答
举报
0/150
提交
取消