1. ホーム
  2. javascript

[解決済み] jQuery.inArray()、正しい使い方は?

2022-03-28 14:50:40

質問

初めて jQuery.inArray() で、ちょっと変な挙動をします。

オブジェクトが配列の中にある場合は0を返しますが、Javascriptでは0はfalseです。そのため、以下のように出力されます。 は配列に含まれません。

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)

しかし、これではコードが読めなくなります。特にこの関数を知らない人にとっては。彼らは、jQuery.inArray("test", myarray)が、"test"が配列にあるときに真を与えると思っているでしょう。

そこで質問なのですが、なぜこのような方法なのでしょうか?私はこれが本当に嫌いなんです。しかし、このような方法をとるには、それなりの理由があるはずです。

解決方法は?

inArray は、配列内にその項目が存在するかどうかを示す boolean ではなく、配列内の要素のインデックスを返します。もしその要素が見つからなかった場合は -1 が返されます。

そこで、ある項目が配列の中にあるかどうかを調べるには、次のようにします。

if(jQuery.inArray("test", myarray) !== -1)