初めて使用しましたjQuery.inArray()
が、動作が少し奇妙です。
オブジェクトが配列内にある場合は 0 を返しますが、Javascript では 0 は false です。したがって、次のように出力されます: "is NOT in array"
var myarray = [];
myarray.push("test");
if(jQuery.inArray("test", myarray)) {
console.log("is in array");
} else {
console.log("is NOT in array");
}
if ステートメントを次のように変更する必要があります。
if(jQuery.inArray("test", myarray)==0)
しかし、これではコードが読みにくくなります。特に、この関数を知らない人にとっては。彼らは、配列に「test」がある場合、jQuery.inArray("test", myarray) が true を返すことを期待します。
そこで私の質問は、なぜこのように行われるのかということです。私はこれが本当に嫌いです。しかし、このように行うには、きっとちゃんとした理由があるはずです。
ベストアンサー1
inArray
配列内の要素のインデックスを返します。配列内に項目が存在するかどうかを示すブール値ではありません。要素が見つからない場合は、-1
が返されます。
したがって、アイテムが配列内に存在するかどうかを確認するには、次を使用します。
if(jQuery.inArray("test", myarray) !== -1)