为什么这样输出的结果不对? 将&&换成||后就可以了,求解!!!

来源:4-10 编程练习

起个名真无语

2016-05-25 17:54

 var infos = [ ['小A','女',21,'大一'],

               ['小B','男',23,'大三'],

               ['小C','男',24,'大四'],

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

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

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

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

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

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

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

            ];

 

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

     

        if(infos[i][3]!="大一" && infos[i][1] !="女") {

            

            continue;

            

        } 

        

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

    

    }


写回答 关注

5回答

  • 慕田峪9273182
    2016-05-26 21:22:22

    很明显你的思维有点问题,正面筛选就该是既是大一又是女的,那么反面筛选就应该是去掉不是大一的或者不是女的,这是集合的概念

    起个名真无语

    是的,进入误区了,谢谢热心解答

    2016-05-27 09:46:51

    共 1 条回复 >

  • 起个名真无语
    2016-05-26 11:22:17

    谢谢大家的热情解答,思路进了误区,现在已经弄清楚了

  • 肥仔强
    2016-05-25 22:26:22

    &&,就是一个对象同时满足两个条件满足才被剔除。 而' || ' 不满足第一个条件才去判断第二个条件 即:

    可以看成 不是大一直接进到方法体里剔除,是大一再判断是不是女的,不是?条件成立,进到方法体里剔除,

    剩下的就是大一女生了!  !(infos[i][3]=="大一" && infos[i][1] =="女")排除掉,把!'乘进去' 不就是

    infos[i][3]!="大一" || infos[i][1] !="女" 

    起个名真无语

    我是要求被筛选数据一次性要满足2个条件,,用 && 肯定是对的。不明白的是为什么这里要用 || ,这个运算符只需要满足一个条件即可

    2016-05-26 10:14:52

    共 2 条回复 >

  • I依恋Lee
    2016-05-25 18:36:45

    &&是与运算,只有当两边的结果都为True的时候才执行。题目要找的就是大一的女生,可是你当找到得就是大一女生的时候用continue语句跳过本次循环,也就等于没有把题目要的结果输出了呀。

    不知道我这样说你能明白不?

    起个名真无语

    我想你没看清楚我的代码,我用的是反向思维,我是剔除掉 不是 “大一” 和 “女”的数组, 用的是 !=

    2016-05-25 18:46:19

    共 1 条回复 >

  • 初初初学者
    2016-05-25 18:32:49

    &&是或,左右两边满足才能进行花括号里面的语句,如果左边不满足,右边就不需要判断了

    起个名真无语

    逻辑运算符 逻辑运算符用于测定变量或值之间的逻辑。 给定 x=6 以及 y=3,下表解释了逻辑运算符: 运算符 描述 例子 && and (x < 10 && y > 1) 为 true || or (x==5 || y==5) 为 false ! not !(x==y) 为 true

    2016-05-25 18:35:38

    共 1 条回复 >

JavaScript进阶篇

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

468195 学习 · 21891 问题

查看课程

相似问题