Моего приложения использует 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, прежде чем запускать код выше, он работает только на время загрузки.
Так Wat я сейчас пытаюсь сделать, это проверить текущий список сообщений путем извлечения временных маркеров существующих сообщений:
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 (сообщение);)
http://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array –