如何测试变量是否不等于两个值中的任何一个?

时间:2011-05-24 19:29:45

标签: javascript if-statement conditional-statements equals boolean-logic

我想写一个if / else语句来测试文本输入的值是否不等于两个不同值中的一个。像这样(借口我的伪英语代码):

var test = $("#test").val();
if (test does not equal A or B){
    do stuff;
}
else {
    do other stuff;
}

如何在第2行写if语句的条件?

8 个答案:

答案 0 :(得分:109)

!(否定运算符)视为“not”,将||(布尔运算符或运算符)视为“或”,将&&(布尔运算符和运算符)视为“和” 。请参阅OperatorsOperator Precedence

因此:

if(!(a || b)) {
  // means neither a nor b
}

但是,使用De Morgan's Law,可以写成:

if(!a && !b) {
  // is not a and is not b
}
上面的

ab可以是任何表达式(例如test == 'B'或其他任何表达式)。

如果test == 'A'test == 'B'是表达式,请注意第一种形式的扩展:

// if(!(a || b)) 
if(!((test == 'A') || (test == 'B')))
// or more simply, removing the inner parenthesis as
// || and && have a lower precedence than comparison and negation operators
if(!(test == 'A' || test == 'B'))
// and using DeMorgan's, we can turn this into
// this is the same as substituting into if(!a && !b)
if(!(test == 'A') && !(test == 'B'))
// and this can be simplified as !(x == y) is the same as (x != y)
if(test != 'A' && test != 'B')

答案 1 :(得分:23)

ECMA2016最短的答案,特别适合检查多个值:

if (!["A","B", ...].includes(test)) {}

答案 2 :(得分:8)

一般情况下会是这样的:

if(test != "A" && test != "B")

您应该阅读JavaScript逻辑运算符。

答案 3 :(得分:2)

我使用jQuery

if ( 0 > $.inArray( test, [a,b] ) ) { ... }

答案 4 :(得分:1)

var test = $("#test").val();
if (test != 'A' && test != 'B'){
    do stuff;
}
else {
    do other stuff;
}

答案 5 :(得分:1)

你在伪代码中使用了“或”这个词,但根据你的第一句话,我认为你的意思是。对此存在一些混淆,因为这不是人们通常说话的方式。

你想:

var test = $("#test").val();
if (test !== 'A' && test !== 'B'){
    do stuff;
}
else {
    do other stuff;
}

答案 6 :(得分:0)

我建议您尝试在if / else语句中使用else if语句。如果您不想运行任何不在任何条件下的代码,您可以在语句结尾处留下其他内容。否则,如果也可以用于任何数量的转移路径,那么每个转移路径都需要一定的条件。

if(condition 1){

}否则if(条件2){

}其他{

}

答案 7 :(得分:0)

这也可以通过switch语句来完成。条件的顺序颠倒了,但实际上并没有什么不同(无论如何,它稍微简单一些)。

switch(test) {
    case A:
    case B:
        do other stuff;
        break;
    default:
        do stuff;
}