私のサイトは、次の JavaScript チェックで false を返し始めました。その理由を理解しようとしています。
_test = ["0e52a313167fecc07c9507fcf7257f79"]
"0e52a313167fecc07c9507fcf7257f79" in _test
>>> false
_test[0] === "0e52a313167fecc07c9507fcf7257f79"
>>> true
誰かが理由を理解するのを手伝ってくれますか?
私のサイトは、次の JavaScript チェックで false を返し始めました。その理由を理解しようとしています。
_test = ["0e52a313167fecc07c9507fcf7257f79"]
"0e52a313167fecc07c9507fcf7257f79" in _test
>>> false
_test[0] === "0e52a313167fecc07c9507fcf7257f79"
>>> true
誰かが理由を理解するのを手伝ってくれますか?
演算子はin
、プロパティがオブジェクト内にあるかどうかをテストします。例えば
var test = {
a: 1,
b: 2
};
"a" in test == true;
"c" in test == false;
配列に特定のオブジェクトが含まれているかどうかをテストします。Array#indexOf メソッドを使用する必要があります。
test.indexOf("0e52...") != -1 // -1 means "not found", anything else simply indicates the index of the object in the array.
MDN の Array#indexOf: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf
MDNから:
in 演算子は、指定されたプロパティが指定されたオブジェクトにある場合に true を返します。
値ではなくキーをチェックします。
そこでは、プロパティ キーは0
ではなくになり"0e52a313167fecc07c9507fcf7257f79"
ます。
0 in _test
であることをテストできますtrue
。
値が配列内にあるかどうかを確認する場合は、indexOfを使用します。
_test.indexOf("0e52a313167fecc07c9507fcf7257f79")!==-1
(IE8 では MDN が提供する shim が必要です)
「in」演算子は、値ではなくオブジェクト キーを検索します。indexOf を使用し、以前の IE バージョンでは実装されていないことに注意する必要があります。そのため、最初の Google 検索結果で Array.prototype.indexOf メソッドのクロス ブラウザー実装を見つけることができます。