用了两个for循环,为什么第二个for循环里面筛选的女生不显示呢?

<!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,'大四'],

    ['小D','女',21,'大一'],

    ['小E','女',22,'大四'],

    ['小F','男',21,'大一'],

    ['小G','女',22,'大二'],

    ['小H','女',20,'大三'],

    ['小I','女',20,'大一'],

    ['小J','男',20,'大三']

    ];

 //第一步把之前的数据写成一个数组的形式,定义变量为 infos

 for(var i=0;i<11;i++)

 {

 if(infos[i][3]==="大一")

 {document.write("大一新生"+infos[i][0]+"<br>");}

 //第一次筛选,找出都是大一的信息

 }

 for(var i=0;i<11;i++)

 {

  if(infos[i][1]=="女")

  {document.write("女生"+infos[i][0]+"<br>");

  }

}

  

</script>

</head>

<body>

</body>

</html>


not_afraid
浏览 1911回答 4
4回答

guozhchun

for(var i=0;i<11;i++)    // infos里面只有10个元素,下标范围 0 ~ 9,不能到10。这里for循环里面会出现下标越界。后面代码将不再执行

qq_青枣工作室_0

因为infos数组的长度为10,而你却写成 for(var i=0;i<11;i++),你以为数组长度是11。把两个地方的 for(var i=0;i<11;i++)改为for(var i=0;i<infos.length;i++)

AMOR跳跳

尽量,不要自己去规定一个数组的长度,最好是通过函数直接得到,这样可以减少错误。

nikomal

循环遍历的时候最好使用.length来获取长度,最好是这样写 for (var i=0 var len=infos.length;i<len;i++){...}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript