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

第一次筛选,为什么使用arr【n】是undefined,使用infos【i】就可以

第一次筛选,为什么使用arr【n】是undefined,使用infos【i】就可以

qq_小辉_4 2017-08-10 23:45:50
  var infos=[     ['小A','女','21','大一'],     ['小B','男','23','大三'],     ['小C','男','24','大四'],     ['小D','女','21','大一'],     ['小E','女','22','大四'],     ['小F','男','21','大一'],     ['小G','女','22','大二'],     ['小H','女','20','大三'],     ['小I','女','20','大一'],     ['小J','男','20','大三']     ] var arr=new Array() n=0 for(var i=0;i<infos.length;i++){     if(infos[i][3]=="大一"){         arr[n]=infos[i]         n++                                   //document.write(infos[i]+"<br>")         document.write(arr[n])      //为什么这里输出的值是undefined     } } document.write("第二次筛选"+"<br>") //第一次筛选,找出都是大一的信息for(var j=0;j<arr.length;j++){    if(arr[j][1]=="女"){        document.write(arr[j][0]+"<br>")    }}undefinedundefinedundefinedundefined第二次筛选小A小D小I
查看完整描述

2 回答

已采纳
?
LiuYina

TA贡献10条经验 获得超1个赞

n+1 和 n++ 可以说是等价的,模拟一下,

假设这时在for循环中 i=0,n=0
arr[n]=infos[i];   //arr[0]=infos[0]
n++;   //这时n=0+1=1
document.write(arr[n]);
  //所以此时输出的是arr[1],而arr[1]里面却没有内容,所以输出undefined


查看完整回答
1 反对 回复 2017-08-11
?
LiuYina

TA贡献10条经验 获得超1个赞

if(infos[i][3]=="大一"){ arr[n]=infos[i]; n++; //这一行去掉 …… 你定义的是arr[n]=infos[i],而输出的是arr[n+1],而此时arr[n+1]还未定义,输出的自然是undefined 如果有什么不对的希望指出
查看完整回答
反对 回复 2017-08-11
  • LiuYina
    LiuYina
    错了,不是去掉,而是将n++;和下一行的document.wrire调换一下位置
  • qq_小辉_4
    qq_小辉_4
    那我把输出结果改成arr【n+1】为什么不行呢
  • LiuYina
    LiuYina
    n+1 和 n++ 可以说是等价的,当你输出 模拟一下,假设这时在for循环中 i=0,n=0, arr[n]=infos[i];//arr[0]=infos[0] n++;//这时n=0+1=1 document.write(arr[n])//所以此时输出的是arr[1],而arr[1]里面却没有内容,所以输出undefined
点击展开后面2
  • 2 回答
  • 0 关注
  • 1895 浏览
慕课专栏
更多

添加回答

举报

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