为了账号安全,请及时绑定邮箱和手机立即绑定

这个程序里在第二个循环里只能输出一个值

这个程序里在第二个循环里只能输出一个值

黄志明 2016-03-24 11:48:40
我知道正确的编程的方法,我想知道的是原因。按道理来说此时的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]  就报错了

查看完整回答
1 反对 回复 2016-03-24
  • 黄志明
    黄志明
    你前边说的,我都知道。但是把上面的代码输进去,是有一个结果的,按你后面说的应该一个也没有啊?是不是在出现第一个undifined的时候,程序就报错了?
  • 黄志明
    黄志明
    搞明白了!你的解答帮了大忙!
  • 1 回答
  • 1 关注
  • 1367 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信