У меня есть список элементов ленты активности, в которых я хочу, чтобы похожие элементы были сгруппированы вместе. Например, вместо 4 записей, в которых говорится: «Джо понравился твой счастливый пост», «Саре понравился твой счастливый пост», «Бобу понравился твой счастливый пост», «Том любит твой счастливый пост», должна быть одна, которая гласит: «Джо , Сара и еще 2 человека оценили ваш радостный пост». Когда элементы объединяются, объединенная публикация будет использовать самую последнюю отметку времени своих частей.
Лента активности не бесконечна и содержит только элементы за последнюю неделю, поэтому все элементы, которые совпадают по свойствам существительного (noun.activityType + noun.id) и глагола, должны быть сгруппированы вместе. У каждого элемента действия есть действующее лицо (кто это сделал), цель (в чью ленту оно отправлено), глагол (что сделал действующее лицо) и существительное (на какой объект действует глагол).
Я поместил этот тестовый набор данных на jsfiddle, чтобы вы могли поиграть с ним:
{
"pts": 0,
"verb": "follow",
"target": "mike",
"actor": "test01",
"title": "test01 has started following you",
"published": "2012-06-04T22:34:01.914Z",
"_id": "4fcd37d9c7f1f40100000d7d",
"noun": {
"id": "mike",
"activityType": "profile",
"title": null
}
}
Одна из стратегий заключается в агрегировании на стороне сервера при создании элемента активности. , но я хотел попробовать сделать это на стороне клиента, используя такие библиотеки, как подчеркивание, чтобы увидеть, выполнимо ли это.