How do I test if a variable does not equal either of two values?
I want to write an if/else statement that tests if the value of a text input does NOT equal either one of two different values. Like this (excuse my pseudo-English code):
var test = $("#test").val(); if (test does not equal A or B){ do stuff; } else { do other stuff; }
How do I write the condition for the if statement on line 2?
Solution 1:
Think of !
(negation operator) as "not", ||
(boolean-or operator) as "or" and &&
(boolean-and operator) as "and". See Operators and Operator Precedence.
Thus:
if(!(a || b)) {
// means neither a nor b
}
However, using De Morgan's Law, it could be written as:
if(!a && !b) {
// is not a and is not b
}
a
and b
above can be any expression (such as test == 'B'
or whatever it needs to be).
Once again, if test == 'A'
and test == 'B'
, are the expressions, note the expansion of the 1st form:
// 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')
Solution 2:
ECMA2016 Shortest answer, specially good when checking againt multiple values:
if (!["A","B", ...].includes(test)) {}
Solution 3:
In general it would be something like this:
if(test != "A" && test != "B")
You should probably read up on JavaScript logical operators.
Solution 4:
I do that using jQuery
if ( 0 > $.inArray( test, [a,b] ) ) { ... }
Solution 5:
var test = $("#test").val();
if (test != 'A' && test != 'B'){
do stuff;
}
else {
do other stuff;
}