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,
};
}
});
};
浙公网安备 33010602011771号