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

为什么我第二次筛选只得到一个结果,为什么

为什么我第二次筛选只得到一个结果,为什么

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

1 回答

?
WingMeng

TA贡献32条经验 获得超13个赞

原因是你第一次筛选时:

var any=new Array();
 for(var i=0;i<infos.length;i++){
     if(infos[i][3]=="大一"){
         document.write(infos[i]+"<br>")
         any=[infos[i]];
     }
 }

这样写的话,any 这个数组在每次 for 循环进 if 语句块时都会被重新赋值一次,当 for 循环结束后,它的值就是最后一次匹配赋值的结果,即 any = ['小I','女','20','大一']。想要实现预期效果,请使用 push 方法:

if(infos[i][3]=="大一"){
    document.write(infos[i]+"<br>")
    any.push(infos[i]);
}


查看完整回答
1 反对 回复 2017-08-09
  • qq_小辉_4
    qq_小辉_4
    push这是什么东西,我怎么没见过
  • qq_小辉_4
    qq_小辉_4
    为什么会是重新赋值,而不是保存每一次的结果在变量any中呢
  • RebekahNi
    RebekahNi
    有一个小问题,any.push([infos[i]]);应该改成any.push(infos[i]);push接受的是参数而不是对象
点击展开后面4
  • 1 回答
  • 1 关注
  • 1199 浏览
慕课专栏
更多

添加回答

举报

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