簡體   English   中英

如何檢查數組中元素的字符串

[英]how to check a string against elements in an array

我正在使用twitter stream api。 我目前正在使用跟蹤和跟蹤參數,但API將它們與OR組合在一起,我想將它們與AND結合起來。 邏輯上這樣做的唯一方法是手動檢查推文是否包含我要關注的userID數組中的userID#,推文文本包含要跟蹤的關鍵字數組中的關鍵字。

我已將tweet對象和tweet.text對象轉換為JSON字符串,如下所示:

            var tweetText = JSON.stringify(tweet.text);
            var tweetObject = JSON.stringify(tweet);

我想要一個像這樣的if語句:

            if tweetObject == a value in tracked ids array && tweetText == a value in tracked words array 
                do the rest of my code

我怎樣才能做到這一點? 我嘗試使用.indexOf(),但只需要一個參數,所以我可以說:

            if(tweetObject.indexOf("12345678") > -1 && tweetText.indexOf("spotify") > -1) {
                do my code
            }

但這不是我想要的,我希望它通過數組,看看tweetObject和tweetText是否包含任何數組元素,如果是這樣,代碼

這就是我所擁有的:

            // start twitter
            t.stream(
                "statuses/filter",
                {follow: trackedHandles, track: trackedWords, lang: "en" },
                function(stream) {
                    stream.on('data', function(tweet) {
                      //convert tweet.text& tweet.entities into two strings
                      var tweetText = JSON.stringify(tweet.text);
                      var userName = JSON.stringify(tweet.entities);
                      var tweetObject = JSON.stringify(tweet);
                      var flag = false;

                     for (var x = 0; x < trackedHandles.length; x++) {
                      //console.log(trackedHandles[x].toString());
                      var searchParam = tweetObject.indexOf(trackedHandles[x].toString());
                      if(searchParam != -1) {
                        flag = true;
                        //console.log(searchParam);
                        //console.log(trackedHandles[x].toString());

                        //incriment the keywords, and store the keywords as keys in redis (as they appear in feed)
                        for (var i = 0; i < trackedWords.length; i++) {
                          if(tweetText.indexOf(trackedWords[i]) > - 1) {
                            // incriments added value to the word
                            console.log(trackedWords[i]);
                            redisClient.incr(trackedWords[i]); 
                          }
                        }

                        //if tweetText does not contains "RT" & "@", print tweet to console.
                        if(tweetText.indexOf("RT") == -1 && tweetText.indexOf("@") == -1) {
                          //console.log(tweetText + "\r\n ");
                          //console.log(screen_name + "\r\n ");
                          //console.log(tweet);
                        } 
                      }
                    }

                    }); 
                }
            );

請幫助大家,這是我本科學位的高級項目。 我有大部分的應用程序它自己完成,我只需要這一件,因為我想要完成的是只根據特定的關鍵字流式傳輸來自特定用戶的推文。 如果您能想到更合適的標題,請告訴我。 在此先感謝您的幫助!

可能你想要jQuery.inArray函數

if(jQuery.inArray("12345678", tweetObject)!==-1)

使用for或forEach循環

var tweetObjArr= [1,2,3,4,5]; 
var tweetIds = [7,3]
var flag = false;
for (var i = 0; i < tweetIds .length; i++) {
  if(tweetObjArr.indexOf(tweetIds [i]) != -1) {
    flag=true;
    break; 
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM