0

質問したいのですが、なぜこれが機能しないのですか?

http://jsfiddle.net/2FMue/4/

var a = $('input').attr('value').split(',');

if(a instanceof Array) alert(1);

if($.inArray($('#id').text(), a)) alert(2);

if($.inArray('United State', a)) alert(3);

// a is array but no return correct match.

値を配列に分割し、$.inArray を使用して文字列が配列内のどこにあるかを確認します。

しかし、正しいインデックスは返されません。

例の何が間違っているのかわかりません。ご意見をお聞かせください。

どうもありがとうございました。

4

5 に答える 5

3

DOCSから:

JavaScriptは0をfalseと大まかに等しいものとして扱うため(つまり、0 == falseですが、0!== false)、配列内の値の存在をチェックする場合、それが等しくない(またはより大きい)かどうかをチェックする必要があります)-1。

それで :

if( $.inArray($('#id').text(), a) != -1) alert(2);
于 2013-02-13T00:43:09.033 に答える
2

$ .inArray()メソッドは、一致するものが見つからない場合に-1を返すという点で、JavaScriptのネイティブ.indexOf()メソッドに似ています。配列内の最初の要素が値と一致する場合、$。inArray()は0を返します。

JavaScriptは0をfalseと大まかに等しいものとして扱うため(つまり、0 == falseですが、0!== false)、配列内の値の存在をチェックする場合、それが等しくない(またはより大きい)かどうかをチェックする必要があります)-1。

詳細はこちら:http ://api.jquery.com/jQuery.inArray/

于 2013-02-13T00:42:45.697 に答える
2

たまたま、検索語は配列の最初の要素ですか?これは0を返し、javascriptはこれをfalseとして扱います。ifステートメントは次のようになります。

if($.inArray($('#id').text(), a) < 0) alert(2);

ドキュメントを読むhttp://api.jquery.com/jQuery.inArray/

于 2013-02-13T00:44:08.697 に答える
2

それは完全にうまく機能します。

$.inArray指定された配列で見つかった (見つからない場合は) 要素のインデックスを返します-1

例として、

$.inArray("United State", ["United State", "America"]) ===  0
$.inArray("Unknown", ["United State", "America"])      === -1

したがって、要素が配列に存在するかどうかを確認するには、次を使用する必要があります。

if ($.inArray("Unknown", ["United State", "America"]) > -1) {
    // ...
}
于 2013-02-13T00:41:34.170 に答える
1

分割からの配列は 0 ベースのインデックスであり、要求している文字列は最初の文字列であるため、0 の値を返します。これは偽物です。 inArray。

入力値を「fred,United State, America」に変更すると、アラートが表示されます。

于 2013-02-13T00:53:58.667 に答える