0

こんにちは、動的に作成される3つの異なる配列にニュースツイートを保存しようとしています。

それらの配列のそれぞれからテキストを取得し、Twitterに別のリクエストを送信したいときに問題が発生しています。

    news_tweets("reuters","1652541",3);
    function news_tweets(query, user_id,count) {
        news_array = [];
        $.getJSON("https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=false&user_id=" + user_id + "&count="+count+
        "&callback=?",
        function (data) {
      for (var i = 0; i < count; i++) {
          var user = data[i].user.name;
          var date = data[i].created_at;
          var profile_img = data[i].user.profile_image_url;
          var text = data[i].text;
          var url = (data[i].entities.urls.length > 0 ? data[i].entities.urls[0].url : '');
          news_array[i] = [{user:user,date:date,profile_img:profile_img,text:text,url:url}];
        }  
      for (var i = 0; i < news_array.length; i++) {
          for (var x=0; x<i.length; x++){
              console.log(news_array[i][x].user);
              }
            }
        });
    }

console.logには何も表示されません。

助けてくれてありがとう!!!!!

4

4 に答える 4

1

まず、あなたが配列の長さcountよりも小さいことを確認してくださいdata。そうしないと、いくつかのundefined値になる可能性があります。

for (var i = 0; i < count && i < data.length; i++) …

では、なぜこれらすべての 1 要素配列を に作成しているのnews_arrayですか? オブジェクトのみを使用してください。

これにより、実際の問題が解決されます。これらの内部配列を間違ってループしています。正しいコードは

for (var i = 0; i < news_array.length; i++) {
    for (var x = 0; x < news_array[i].length; x++){
        console.log(news_array[i][x].user);
    }
}

また、コードを適切にインデントする必要があります。コードが読めない奇妙な中括弧がいくつかあります。

于 2012-09-14T10:22:19.127 に答える
0

問題は、終わり近くx<i.lengthforループにあります。iは数字なので、はありませんlength。あなたはおそらく意味しx < news_array[i].lengthました。

于 2012-09-14T10:26:26.697 に答える
0

次のことを試すことができます。

  • メソッドを使用pushして、配列内の要素/データを追加しますnew_array

  • コンソールに値forを表示するには、1つのループのみを使用しますuser

したがって、コードは次のようになります。

news_tweets("reuters","1652541",3);

function news_tweets(query, user_id,count) {
    news_array = [];
    $.getJSON("https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=false&user_id=" + user_id + "&count="+count+
    "&callback=?",
        function (data) {
          for (var i = 0; i < count; i++) {
              var user = data[i].user.name;
              var date = data[i].created_at;
              var profile_img = data[i].user.profile_image_url;
              var text = data[i].text;
              var url = (data[i].entities.urls.length > 0 ? data[i].entities.urls[0].url : '');

              // Pushing your elements in your array, 1 by 1
              news_array.push({user:user,date:date,profile_img:profile_img,text:text,url:url});
        }  

        // Here you only need 1 loop!
        for (var i = 0; i < news_array.length; i++) {
            console.log(news_array[i][x].user);
        }
    });
}
于 2012-09-14T10:32:34.777 に答える
0

最初のことは、最初のものを count ではなく data.length までループすることです。これは、API であり、すべてのデータを「返す可能性がある」または「返さない可能性がある」ためです。したがって、data.length までループするのはばかげた証明になります。

そしてあなたの問題は i.length にあります

for (var i = 0; i < news_array.length; i++) { 
    console.log(news_array[i].user);
}

これはうまくいくはずです。なぜループをループする必要があるのか​​ わかりません。

于 2012-09-14T11:22:45.797 に答える