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 />");
}
很明显你的思维有点问题,正面筛选就该是既是大一又是女的,那么反面筛选就应该是去掉不是大一的或者不是女的,这是集合的概念
谢谢大家的热情解答,思路进了误区,现在已经弄清楚了
&&,就是一个对象同时满足两个条件满足才被剔除。 而' || ' 不满足第一个条件才去判断第二个条件 即:
可以看成 不是大一直接进到方法体里剔除,是大一再判断是不是女的,不是?条件成立,进到方法体里剔除,
剩下的就是大一女生了! !(infos[i][3]=="大一" && infos[i][1] =="女")排除掉,把!'乘进去' 不就是
infos[i][3]!="大一" || infos[i][1] !="女"
&&是与运算,只有当两边的结果都为True的时候才执行。题目要找的就是大一的女生,可是你当找到得就是大一女生的时候用continue语句跳过本次循环,也就等于没有把题目要的结果输出了呀。
不知道我这样说你能明白不?
&&是或,左右两边满足才能进行花括号里面的语句,如果左边不满足,右边就不需要判断了