2009-09-04 6 views
0

HI、javascriptの - 配列の配列、カウントインデックス

私はこのコードのビットで探しています:

var length = 0; 
for (recordId in publicationTableIndexes[sortColumnNumber]){ 
    length++; 
} 

とせずに同じ結果を得るための方法がある場合、私は疑問に思ってループ?

publicationTableIndexesは5つの配列を含む配列です。 publicationTAbleIndexes [sortColumnNumber] .lengthを試してみると、私は定義されていません。

アイデア?

ありがとう、Ron。

私はいくつかのテストを行い、サブ要素が実際にオブジェクトであることに気づきました。コンストラクタコード:

function sortTableByCreatingIndex(table, sortingColumnNumber, sortOrder, superTable){ 
var length = 0; 

//Length -1 due to the array doing an upwards comparison, if length not adjusted null object error. 
length = table.length - 1; 

for (recordId = 0; recordId <= length; recordId++){ 
    this[recordId] = recordId; 
} 

私は実際には以前の「この」使用法に遭遇しておらず、かなり興味を持っていました。私はそれをどのように取り出して配列として定義するかを知ることに興味があります。どのように 'this'は動作しますか?コードを見て、その値がどこから得られているか分かりません。ちょっとした「魔法と同じように」、どのオブジェクトを参照するかを知っています。

おかげで、R.

+4

私は、配列( '[]'リテラル)よりもむしろオブジェクト( '{}'リテラル)を持っていると思います。配列には 'length'プロパティがあり、オブジェクトにはありません。 – Gumbo

+0

いいえ、その配列です。publicationTableIndexes = new Array(); – flavour404

+2

publicationTableIndexesは配列ですが、確かにpublicationTableIndexs [0]は配列かオブジェクトリテラルですか? – gnarf

答えて

0

は、配列内のデータのような音、あなたはそれがあることを期待するものではありません。私は何だろうと、放火犯を取得し、ちょうどあなたの配列の内容全体が表示され、あなたは正確にそれであるかを見ることができますあなたのループ

console.debug(publicationTableIndexes); 

前に、次に入れてあります。

+0

? 私はそれが保持するデータに問題はありません、私はちょうど配列の長さを知りたい! – flavour404

+1

フレーバー、誰もここで誰もそれが配列であることを知っていません - 配列のようには見えません(配列のメンバーです - それが何であるかを知っています)、配列のようには言いません(.lengthは未定義です、インスタンス)。あなたはデータに自信がありますが、私たちはそれを見ていません。提案された方法のいくつかを試してみるか、失敗の詳細を報告するか、データを表示してください。 –

+0

私は説明された方法を試しています。 – flavour404

3

publicationTableIndexesの各エントリに格納されているデータは、おそらく.lengthプロパティを持たないオブジェクトを使用して格納されています。

SO5223は、オブジェクトの長さを判断するための「最良の」方法をカバーしています。