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));