2009-07-02 12 views
2

私は多次元配列ですが、問題はありません。実際にデータを保持しているかどうかを確認するために、どの配列をインタロゲータで調べるのですか?私はVS 2008で作業しています。デバッガで見ることができるのは、要素xを呼び出すことができます。x {...}です。しかし、x.lengthを試してみると「undefined」というメッセージが表示されるので、配列に何も含まれていない場合はどうすれば確認できますか?JavaScriptで多次元配列を扱うにはどうすればよいですか?

タイプ(x)がオブジェクトを返しています。ここにコンストラクタコードがあります:

function initArray() { 
var length = initArray.arguments.length for (var i = 0; i < length; i++) 
{ this[i+1] = initArray.arguments[i]; } } 

したがって、それはそうではありません!

マルチレベル配列では、3番目のレベルが下がってx = pub [1] [8]がターゲット配列になりますが、次にx.length、x []に移動すると言ったように定義されていません...

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

+0

フォーマットが少し変わったので、ここから始めましょう。あなたは長さ宣言の後にセミコロンを持っていますか?私はそれを見ない。 – Nosredna

+0

ありがとう、私はそれを修正し、リストを通って自分のやり方をすることができました...他人のコードマン! – flavour404

答えて

1

オブジェクトxが配列ではないようです。

この場合、長さはゼロまたは正の整数になります。

オブジェクトがあり、誤って展開プロパティが追加されているようです。

はこれを試してください:あなたが言及したよう

for(var prop in x) { 
    var p = prop; // set a breakpoint on this line and check the value of prop 
} 
+0

これはトップのように機能し、私が望むことを実行するために他のコードでも働くことができました。だから感謝します。 – flavour404

+0

問題ありません!オブジェクトを列挙することはJavascriptの隠された宝石です。 –

0

チェックオブジェクトが最初の配列の場合:あなたは、それは、配列ではなく、オブジェクトの確認

function isArray(obj) { 
    return obj.constructor == Array; 
} 
+1

実際にobjが実際にオブジェクトであることを確認して、安全であることを確認したい場合もあります。 – Shog9

+0

オブジェクトであることを確認することで、配列であるかどうかを直接確認するよりも確かなことは明らかになりません。多くの異なるタイプの要素は、それ自体をオブジェクトとして識別します。 –

+1

私は、定義されていないオブジェクトを意味します。 – Shog9

2

ですが?配列は[]を使用し、オブジェクトは{}を使用します。

配列の長さは、その定義時に0にする必要があります。

を確認して、undefinedであるかどうかを確認できます。

これは、コードを見ずに暗闇の中で撮影している場合です。

+0

これは、彼が話しているビジュアルスタジオデバッガです。しかし、その提案は健全です。 – Shog9

+0

ハハ。いい視点ね。私はそれを発射し、自分自身を見ていくつもりです。 – Nosredna

+0

typeof(x)が「オブジェクト」を返しているのでクールです。コンストラクタコードは以下の通りです: – flavour404

0

「x = new Array();」のように作成された配列の場合は、または "x = [];"なら、それは.lengthプロパティを持つべきです。 .lengthプロパティがない場合は、null参照(オブジェクトなし)を扱っている可能性があります。そうしないと、配列を扱っていません。

0

あなたはそれをチェックするためにブール演算を使用することができます。

var arrayHasValues = false; 
if (x.length) { // <-- Will be 'true' if 'length' is not null or undefined 
    if (x.length > 0) { 
     arrayHasValues = true; 
    } 
} 

if (arrayHasValues) { 
    // Do Something with Array 
} 
0

lengthプロパティを欠いJavaScriptで唯一のベクトルデータ型はObjectあるので、あなたはおそらく、オブジェクトではなく配列を扱っています。