Добавление уровней в дерево, созданное из массива в Javascript - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь создать дерево комментариев для своего 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.

Однако я не могу этого сделать.Я хочу сделать это только в текущем наборе циклов.Я не хочу перебирать дерево еще раз, чтобы просто вычислить и заполнить данные уровня.

Здесь вам нужна помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...