1
var x = new Array(10);
$.inArray(10,x);
#Returns -1

フィドル

私はこの奇妙な問題に遭遇し、配列内の値を$.inArray非常に単純にチェックしています。

ただし、配列に値が 1 つしかない場合は、 をinArray返します-1。配列に別の値を追加すると、期待どおりに機能します。

これは整数でのみ発生し、文字列では発生しません。

どうしたの?!

4

3 に答える 3

4

10内部に1 つの数値 ( ) を含む配列を作成する場合は、ブラケット リテラルを使用する必要があります。

var x = [10];
$.inArray(10,x);

またはプッシュで:

var x = new Array();
x.push(10);

明らかに、最初の方が読みやすく、書き込みも高速です。

JavaScript 配列は、単一の引数が Array コンストラクターに渡され、その引数が数値である場合を除き、指定された要素で初期化されます。この特殊なケースは、Array コンストラクターで作成された JavaScript 配列にのみ適用され、ブラケット構文で作成された配列リテラルには適用されないことに注意してください。

Array コンストラクターに渡される唯一の引数が整数の場合、新しい空の JavaScript 配列とその長さがその数値に設定されます MDN

固定フィドル

于 2012-12-27T21:28:15.447 に答える
1

JavaScript の配列のドキュメントを確認することをお勧めします。リンク: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array

あなたの場合、次を使用して:

var x = new Array(10);

長さ10の配列を作成し、配列の各項目は未定義です

使用することをお勧めします:

var x = [10];

これは、インデックス 0 に値 10 を持つ項目が 1 つある配列です。

于 2012-12-27T21:31:56.420 に答える
0

var x = new Array(10);「10」を含む配列ではなく、10 スロットの配列を作成します

于 2012-12-27T21:31:48.743 に答える