JQuery ifステートメントでOR演算子を使用して10個の状態を除外する必要があります。これを行う方法?
私が使用しているコード:
if ((state != 10) || (state != 15) || (state != 19) ||
(state != 22) || (state != 33) || (state != 39) ||
(state != 47) || (state != 48) || (state != 49) ||
(state != 51))
return true;
ありがとう
何を考える
if ((state != 10) || (state != 15) || (state != 19) || (state != 22) || (state != 33) || (state != 39) || (state != 47) || (state != 48) || (state != 49) || (state != 51))
手段。 ||
は「または」を意味します。これの否定は(DeMorganの法則による)です:
state == 10 && state == 15 && state == 19...
言い換えると、state
が同時に10、15、および19(およびorステートメントの残りの数字)に等しい場合にこれがfalseになる唯一の方法は不可能です。
したがって、このステートメントはalways trueになります。たとえば、状態15が状態10に等しくなることはありません。したがって、state
が10に等しくないか15に等しくないことはalways trueです。
変化する ||
から&&
。
また、ほとんどの言語では、次のものがあります。
if (x) {
return true;
}
else {
return false;
}
必要ありません。この場合、メソッドはtrue
がtrueのときx
を返し、false
がx
のときfalse
を返します。あなたはただすることができます:
return x;
記述したコードは常にtrue
を返します。これは、state
が10でも15でもないため、ステートメントがfalseになるためです。 if ((state != 10) && (state != 15)....
AND
は、不要なOR
です。
代わりに $。inArray を使用してください。これは、配列内の要素のインデックスを返します。
var statesArray = [10, 15, 19]; // list out all
var index = $.inArray(state, statesArray);
if(index == -1) {
console.log("Not there in array");
return true;
} else {
console.log("Found it");
return false;
}
論理OR '||'は、一度真の条件を満たした場合、自動的に短絡します。
false || false || true || false = true、2番目の条件で停止します。
一方、論理AND '&&'は、一度偽条件を満たした場合に自動的に短絡します。
false && true && true && true = false、最初の条件で停止します。
更新:.indexOf()
を使用して、stat
値がarr
要素の1つであるかどうかを検出する
純粋なJavaScript
var arr = [20,30,40,50,60,70,80,90,100];
//or detect equal to all
//var arr = [10,10,10,10,10,10,10];
var stat = 10;
if(arr.indexOf(stat)==-1)alert("stat is not equal to one more elements of array");