2015-07-20 35 views
1

我的應用程序是使用Pubnub,我檢索的聊天記錄與下面的代碼:比較數組用foreach項目

$scope.populateMessages = function() {  
     // Populate message history using jsapi (optional) 
     PubNub.jsapi.history({ 
      channel: $scope.channel, 
      count: 15, 
      callback: function(payload) { 
       payload[0].forEach(function(message) { 
       $scope.messages.push(message); 

       //message timetoken 
       console.log(message.pn_apns.aps.timetoken); 
      }); 
      $scope.messagesStatus = false; 
      $scope.connectionStatus = false; 
      $scope.$apply(); 
      } 
     }); 
    }; 

當我的應用程序從我要再次檢查新郵件的背景的。 但是,當我運行上面的代碼時,我得到重複。如果我在運行上面的代碼之前清除了$ scope.messages,它只會在加載時有效。

所以笏目前,我想要做的是通過檢索現有消息的時間標記檢查郵件的當前列表:

var div = $('.list'); 
var divs = $('.item .chatMessage'); 
var divArray = []; 

for (var i = 0; i < divs.length; i += 1) { 
    divArray.push(divs.attr('timetoken')); 
} 

//list of existing messages timetokens 
console.log(divArray); 

而且我想他們與檢索到的新的消息進行比較上面的populateMessages函數。如果timetoken已經存在什麼也不做,如果timetoken不存在添加消息的消息($ scope.messages.push(消息);)

+0

http://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array –

回答

1

如果您使用的是像lodashunderscore庫,你可以做

$scope.messages = _.uniq($scope.messages, function(msg) { return msg.timetoken;})