循环遍历对象数组以将特定数据拉出

时间:2016-12-10 17:42:34

标签: javascript angularjs node.js twitter

我正在构建一个节点表达角度推特状态分析器,我试图弄清楚如何将tex拉出来并将其分配给一个长字符串以供以后使用。

我试图提取这样的用户状态:

   client.get('statuses/user_timeline', {params, count:20}, function(error, tweets, response) {
    var jsonObject;
    if (!error) {
      analyze.analyze(tweets);
      }
  });

响应看起来像这样:

    [
  {
    "coordinates": null,
    "favorited": false,
    "truncated": false,
    "created_at": "Wed Aug 29 17:12:58 +0000 2012",
    "id_str": "240859602684612608",
    "entities": {
      "urls": [
        {
          "expanded_url": "/blog/twitter-certified-products",
          "url": "",
          "indices": [
            52,
            73
          ],
          "display_url": "
        }
      ],
      "hashtags": [

      ],
      "user_mentions": [

      ]
    },
    "in_reply_to_user_id_str": null,
    "contributors": null,
    "text": "Introducing the Twitter Certified Products Program: ",
    "retweet_count": 121,
    "in_reply_to_status_id_str": null,
    "id": 240859602684612608,
    "geo": null,
    "retweeted": false,
    "possibly_sensitive": false,
    "in_reply_to_user_id": null,
    "place": null,
    "user": {
      "profile_sidebar_fill_color": "DDEEF6",
      "profile_sidebar_border_color": "C0DEED",
      "profile_background_tile": false,
      "name": "Twitter API",
      "profile_image_url": ",
      "created_at": "Wed May 23 06:01:13 +0000 2007",
      "location": "San Francisco, CA",
      "follow_request_sent": false,
      "profile_link_color": "0084B4",
      "is_translator": false,
      "id_str": "6253282",
      "entities": {
        "url": {
          "urls": [
            {
              "expanded_url": null,
              "url": "",
              "indices": [
                0,
                22
              ]
            }
          ]
        },
        "description": {
          "urls": [

          ]
        }
      },

我目前的代码如下:

function analyze(data) {
  for (var i = 0; i < data.length; i++) {
    tweet = data[i]['text'];
    tweet = tweet.replace('#' , '');
    return console.log(tweet);
  }
}

module.exports.analyze = analyze;

目前我的分析功能输出中只有一条推文。我究竟做错了什么?

谢谢。

3 个答案:

答案 0 :(得分:2)

要提取一个包含所有twitts文本的数组而不使用#,您可以执行以下操作:

function analyze(data) {
    return data.map(function(item) {
        return item.text.replace('#' , '');
    });
}

module.exports.analyze = analyze;

答案 1 :(得分:1)

您发布的回复不是有效的JSON,请仔细检查一下吗?

答案 2 :(得分:0)

您正在返回console.log()

返回语句停止执行该函数。只需删除return语句,如下所示:

{{1}}

如果要返回函数的结果,则必须将它们存储在for循环之外的变量中,每次迭代时都与tweet连接,并返回该值。