Как правильно обойти объект JS для построения дерева?
const categories = [
    { id: 1, name: 'name 1', parent: null },
    { id: 2, name: 'name 2', parent: 1 },
    { id: 3, name: 'name 3', parent: 6 },
    { id: 4, name: 'name 4', parent: 5 },
    { id: 5, name: 'name 5', parent: 6 },
    { id: 6, name: 'name 6', parent: null },
    { id: 7, name: 'name 7', parent: null }
];

function buildTree(items, parent) {
    parent = parent || null;
    let result = [];

    items.forEach((item) => {
        if (item.parent === parent) {
            result.push(item);
            item.children = buildTree(items, item.id);

            if (!item.children.length) {
                delete item.children;
            }
        }
    });
    
    return result;
}
// todo: не обходить уже добавленные
console.log(buildTree(categories));
Как построить дерево на основе parent?