Я пытаюсь создать дерево комментариев для своего SPA.Пока я могу конвертировать массив объектов, которые я получаю из моего API, в красивую древовидную структуру, используя
list_to_tree: async (docs) => {
var tree = [],
childrenOf = {};
var item, id, parentId;
docs.forEach((item) => {
id = item.unqid;
parentId = item.parent_id || 0;
// every item may have children
childrenOf[id] = childrenOf[id] || [];
// init its children
item.children = childrenOf[id];
if (parentId != 0) {
// init its parent's children object
childrenOf[parentId] = childrenOf[parentId] || [];
// push it into its parent's children object
childrenOf[parentId].push(item);
} else {
tree.push(item);
}
})
console.log(tree)
return tree;
}
Теперь я также хочу добавить уровень (Как далеко находится текущий комментарий откомментарии root) к каждому из моих узлов в дереве.Я хочу ограничить вложенность только 3 уровнями в моем SPA.
Идея состоит в том, что если parentid для любого узла равен 0, то его уровень равен 0, в противном случае уровень является уровнем родительского элемента + 1.
Однако я не могу этого сделать.Я хочу сделать это только в текущем наборе циклов.Я не хочу перебирать дерево еще раз, чтобы просто вычислить и заполнить данные уровня.
Здесь вам нужна помощь.