Разрабатываю фронтенд для самописного форума. Нужно написать функцию, которая будет создавать дерево ответов в постах. Затем это дерево будет рекурсивно рендерить React(это уже сделано).
Типичный пост выглядит так(убрал элементы, не относящиеся к задаче):
{
id: 2,
refTo: 1
comment: 'Комментарий'
}
id - id поста, refTo - id поста, на который отвечает этот пост.
Написал следующую функцию:
const createReplyTree = (replyNode, thread = replyNode) => {
const tree = replyNode.map(i => {
const replies = thread.filter(item => item.refTo === i.id);
return {...i, replies: createReplyTree(replies, thread)};
});
return tree;
};
Частично реализовывает задачу - к постам, на которые кто-то ответил, эти посты рекурсивно добавляет в replies. Но в конце массива остаются дубликаты ответов. Их нужно как-то исключить из массива.
Решение желательно на ES6 и без сторонних библиотек.
У постов может и не быть refTo.