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

我知道正确的编程的方法,我想知道的是原因。按道理来说此时的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>


黄志明
浏览 1368回答 1
1回答

李晓健

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]  就报错了
打开App,查看更多内容
随时随地看视频慕课网APP