2011-07-07 13 views
0

このXMLデータを取得し、このjQuery.ajax呼び出しの成功関数内で解析しています。今jQuery "each" - data ... changes ...ループの反対側

var d1 = []; 
jQuery.ajax( 
    { url: ("/charts/quotes/" + name + ".xml"), 
     success: function(data) 
     { 
      var dString; var qString; var d; var q; 
      jQuery(data).find("HistoricalQuote").each(
      function() { 
       dString = $(this).children("Date").text(); 
       qString = $(this).children("LastClose").text(); 
       d = Date.parse(dString); 
       q = parseFloat(qString); 
       d1.push([ d, q ]); 
       console.log(d1[d1.length-1][0] + ": " + d1[d1.length-1][1]); 
       /*^First Log^*/ 
      }); 
      console.log(d1.length); 
      for (var q in d1) 
      { 
       console.log(q[0] + ": " + q[1]); 
       /*^Second Log^*/ 
      } 
     }, 
     async: false /*The success function must complete before we continue.*/ 
    }); 

、その最初のログが、私はそれを期待している私のデータをバック与えている - それは、タイムスタンプかもしれないように見える本当に長い整数が、あり、そして「Q」「d」が入荷です見積もり - 約26の浮動小数点。

これは奇妙なことです。その各ループ(「第2のログ」)の外側には、私は非常に異なるデータセットを取得します。それはで始まる:

(行を返すために申し訳ありません...スタックオーバーフローがそれに奇妙な何かをしていた)

0:

1を未定義:

2を未定義:未定義

3:未定義

4:未定義

5:未定義

6:未定義

7:未定義

8:未定義

9:

不定...、その後に進む:

1 :0

1:1

1:2

...

1:9

2:0

...

3:9

4:0

これには何かがありますか私はそれを2度目に繰り返す方法と関係がありますか?それとも "プッシュ"の仕組みですか?世界では何が起こっているのですか?

+1

http://stackoverflow.com/questions/500504/javascript-for-in-with-arrays – Heikki

答えて

1

qは実際には値ではなくd1の項目のインデックスになります。ヘイッキさんのコメントにリンクを参照してください...しかしのために/で使用すると、数値添字の配列に悪い考えです

 for (var q in d1) 
     { 
      console.log(d1[q][0] + ": " + d1[q][1]); 
      /*^Second Log^*/ 
     } 

:あなたのような何かをしたいと思います。

+0

ああ...私はそれをしたと信じられない。私はちょうどforeachを使ってテストしています。 – Daniel