多级目录将数据递归成树状

let data = [
    { id: 1, name: "电器", parentid: 0 },
    { id: 2, name: "日用品", parentid: 0 },
    { id: 3, name: "车用品", parentid: 0 },
    { id: 4, name: "电饭煲", parentid: 1 },
    { id: 5, name: "毛巾", parentid: 2 },
    { id: 6, name: "雨刷器", parentid: 3 },
    { id: 7, name: "小锅", parentid: 4 },
    { id: 8, name: "绸缎毛巾", parentid: 5 },
    { id: 9, name: "小刷子", parentid: 6 },
    { id: 10, name: "盆", parentid: 2 },
    { id: 11, name: "塑料盆", parentid: 10 },
    { id: 12, name: "铁盆", parentid: 10 },
    { id: 13, name: "空调", parentid: 1 },
    { id: 14, name: "格力", parentid: 13 },
]
function formatToTree(ary, pid) {
    return ary
        .filter((item) =>
            // 如果没有父id(第一次递归的时候)将所有父级查询出来
            // pid为父id.
            pid === undefined ? item.parentid === 1 : item.parentid === pid
        )
        .map((item) => {
            // 通过父节点ID查询所有子节点
            item.children = formatToTree(ary, item.id);
            return item;
        });
}

let res = formatToTree(data, 0);

console.log(formatToTree(data, 0));