2016-05-06 5 views
0

TwitterのAPIからツイートやコメントを取得したいと思います。これを実行した後、私はつぶやきと言及を収集し、1つのjson配列に格納します。これまでツイートや言葉の両方を保存していたとき、システムはそのオブジェクトのつぶやきをその言葉に置き換えましたか?オブジェクトにマージするようなものですObject.assign()twitterからデータを処理する

jsonx = {}; 

var tweets = function(){ 
    client.get('search/tweets', {q:"@"+string.teamname, count:1}, 
     function (err,data){ 
      for(var index in data.statuses){ 
       var tweet = data.statuses[index]; 
       jsonx[index] = tweet 

      } 
     }) 
} 


var mentions = function(){ 
    client.get('statuses/user_timeline', {screen_name:"@"+string.teamname, count:1}, 
     function(err,data) { 
      for(var index in data){ 
       var tweet = data[index]; 
       jsonx[index] = tweet 


      } 

     }) 
} 


var doSometing = function(tweets, mentions){ 
    if (string.checktweet1 == 'on'){ 
     tweets() 
    } 
    if (string.checkmentions1 == 'on'){ 
     mentions() 
    } 


} 

doSometing(tweets,mentions) 
+1

forループのインデックスは同じですか?そうであれば、一方は他方を上書きします。 – litel

+0

はい両方のループに同じインデックスがあります@litel –

+0

'jsonx'の中に空の配列として' tweets'と 'mentions'を追加することができます。次に、 'jsonx [index] = tweet'の割り当てを' jsonx.tweets [index] = tweets''jsonx.mentions [index] = tweets'に変更することができます。そしてすべてがうまくいくはずです。 – litel

答えて

0

ルックは、(現実には、それは新しいオブジェクトを作成します)。あなたはArray.concatとそれを組み合わせる場合、あなたはこのような何かを行うことができます...

let jsonx = { 
    tweets: [], 
    mentions: [] 
}; 

// .... 

let tweet = data.statuses[index]; 

jsonx = Object.assign({}, jsonx, { 
    tweets: jsonx.tweets.concat([tweet]) 
}); 

あなたの例は望ましくなく、あなたに上書きツイートを言及リード変異を必要とします。この例では、古いデータ(新しい配列を作成するArray.concatと同じ)に基づいて常に新しいオブジェクトを作成しています。

+0

返信いただきありがとうございますが、私は初心者であり、私の問題にあなたのソリューションを適応させる方法がわかりません –

関連する問題