0

わかりました、以下のfirebugのスクリーンショットに見られるように、このリテラル配列が宣言されています

ここに画像の説明を入力

今、私はそれをトラバースしようとしましたjquery.each();

これは私のコード

$.each(window.feeditems,function(key,val){
   alert('pass OK');
   console.log('index:' + key + ', ' + 'value:' + val);
}); 
console.log('overview:' + window.feeditems);
console.log('length:' + window.feeditems.length);

上記のコードでは、のコールバック内の TODOは、コンソールに出力されたときに$.each期待どおりに実行されません。lengthundefined

非常に奇妙なケースwindow.feeditemsでは、firebug で を印刷すると、上のスクリーンショットに表示されているように、リテラル配列が完全に表示されます。

今私の質問は、この種の配列をどのようにトラバースできるかです。私は配列jquery.each()のプロパティに依存していることを知っlengthています.forループを使用することも考えていますが、そのサイズを知らずにループするにはどうすればよいですか?

更新 1

長さを再確認してどこかに転送すると、長さゼロが返されますが、次の行にコンテンツチェッカーコードを配置すると、配列の内容がまだ含まれています。

更新 2

コードでノードに手動でアクセスせずにランタイムでこの配列をトラバースできるようにするための回避策はありますか? たとえば、for ループを使用していますか?

4

2 に答える 2

3

配列は数値インデックスのみを受け入れます。代わりに文字列キーを定義しているように見えますが、これは の一部としてカウントされず、 に.length表示されません.each()

で定義を開始する代わりに[]、 を使用{}して文字列キーを許可します。ただし、まだ使用できないことに注意してください.length

于 2012-08-27T16:48:31.190 に答える
0

JavaScriptFor...Inステートメントを使用する

http://www.w3schools.com/js/js_loop_for_in.asp

http://www.w3schools.com/js/tryit.asp?filename=tryjs_object_for_in

于 2012-08-29T07:00:30.720 に答える