为什么写dayi[i]=infos[i]会出错

来源:4-10 编程练习

积年

2017-09-11 15:16

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

var dayi = new Array();

for(var i=0;i<infos.length;i++){

if(infos[i][3]=='大一'){

dayi[i]=infos[i];

}

}

//第二次筛选,找出都是女生的信息

for(var i=0;i<dayi.length;i++){

switch(dayi[i][1]){

case '女':

document.write(dayi[i][0]+"<br/>");

}

}

一开始是这样写的,可是只会输出一个小A,在console里发现dayi.length是9,而且除了dayi[0]其他全是undefined,为什么会这样啊Q A Q

写回答 关注

2回答

  • 阿甘油
    2017-09-12 09:35:07

    不好意思,你说的对。dayi.length == 9 说明你的 dayi[9] = infos[9]的,至于为什么只会出现day[0]有数据,要看看你的数据是怎么写的了。说实话,你可以让dayi的下标自己增加不就可以了吗,不要用i表示。

    积年

    是的 我最后又声明了一个j作为dayi的下标然后让j在满足条件的时候j++问题就解决了,就是想不太明白为什么用i会出现这种情况OTZ

    2017-09-12 10:57:23

    共 1 条回复 >

  • 阿甘油
    2017-09-11 15:44:13

    i时随着循环增加的,因此dayi[i]中的i也会改变,当筛选不到时,dayi[i]中就不会赋值,然而i继续增加,因此这些没有被赋值的dayi[i]里面存储的就是undefined(只给了声明没有赋值)

    积年

    感谢回答0 0可是按道理不满足条件的话if里的语句也不会运行啊,为什么dayi会被声明出来呢。。。

    2017-09-11 21:46:24

    共 1 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题