У меня проблема с построением канала передачи данных фильтра. Я хотел бы передать данные с удаленными дубликатами из моего объекта.
Это мой ngFor:
<ng-container *ngFor="let message of messages | filterDates">
Я хотел бы передать свой массив сообщений через этот канал, чтобы удалить повторяющиеся даты из каждый объект. Каждый объект в моем массиве имеет
'timestamp': 1590064423327
некоторые объекты имеют одинаковую метку времени, а некоторые нет. Я хотел бы установить метку времени равной нулю в этих объектах, если предыдущий объект из массива имеет такое же значение метки времени. Если предыдущий имеет другое значение временной метки, я хотел бы передать временную метку, как в текущем объекте.
Чтобы лучше понять, пример: я получаю сообщения от моего API с временными метками. Я хотел бы показать дату только для первого сообщения, потому что следующие сообщения относятся к тому же дню, поэтому нет необходимости показывать дату для этих сообщений. Если следующие сообщения поступают не в тот же день, я хотел бы отображать только значение даты первого сообщения со следующей отметки времени. Он предназначен для группировки сообщений по дате.
Я подготовил канал для этого, но, к сожалению, я не уверен, что делать в этом канале для достижения этой конкретной цели c. Я почти уверен, что мне следует использовать Loda sh, но я точно не знаю, какой оператор мне использовать. Заранее благодарим вас за любую помощь.
Это проблема, которая у меня возникла от @ Yoge sh Ответ разработчика:
Я думаю, что проблема здесь в том, что он нажимает на элемент массива с нулевым значением, а затем сравнивает следующий элемент с нулевой меткой времени. Я забыл упомянуть, что мне нужно сравнивать метки времени в формате даты, потому что метки времени указаны с секундами, поэтому они всегда будут разными. Вот как я сравниваю отформатированные даты с моментом js:
if (index > 0 && (moment(message.timestamp).format('DD/MM/YYYY') == moment(messages[index - 1].timestamp).format('DD/MM/YYYY'))) {
message.timestamp = null
}
finalMessages.push(message)