js["1/2/3","/1","/1/2"]格式数据转换成树形结构
const buildtree = (list: any) => {
const temp = {};
const tree = [];
const data = formatData(list);
for (const i in data) {
temp[data[i].id] = data[i];
}
for (const i in temp) {
// 如果有父级id
if (temp[i].pid) {
if (!temp[temp[i].pid].children) {
temp[temp[i].pid].children = [];
}
// 将父节点与子节点连接起来
// temp[temp[i].pid].children[temp[i].id] = temp[i];
temp[temp[i].pid].children.push(temp[i]);
} else {
tree.push(temp[i]);
}
}
return tree;
};
// data数据格式为['/1/', '/1/2/', '/1/2/3/']
// 数据以&连接避免有相同的id
const formatData = (data: string[]) => {
return data.map((x) => {
const item = x.split("/");
item.pop(); // 去掉最后一项空元素
const title = item.slice(-1)[0];
if (item.length !== 2) {
return {
path: item.join("/"),
id: item.pop() + "&" + item.join("/"), // 防止出现相同的id
pid: item.pop() + "&" + item.join("/"),
title: title,
value: title,
key: title,
};
} else {
return {
path: item.join("/"),
id: item.pop() + "&" + item.join("/"),
pid: "",
title: title,
value: title,
key: title,
};
}
});
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?