原始数据:
[
{ “orgid”: “1197A11000000000JGVP”, “porgid”: “4496”, “orglevel”: “03”, “orgname”: “工会” },
{ “orgid”: “1197A11000000000JGU4”, “porgid”: “4496”, “orglevel”: “03”, “orgname”: “信用卡部” },
{ “orgid”: “4496”, “porgid”: “44”, “orglevel”: “02”, “orgname”: “广东省分行本部” }
]
porgid是父节点数据
处理后的数据:
[
{
“name”: “广东省分行本部”,
“id”: “4496”,
“children”: [
{
“name”: “工会”,
“id”: “1197A11000000000JGVP”,
“children”: []
},
{
“name”: “信用卡部”,
“id”: “1197A11000000000JGU4”,
“children”: []
}
]
}
]
代码部分:
const rawData = [
{
orgid: “1197A11000000000JGVP”,
porgid: “4496”,
orglevel: “03”,
orgname: “工会”
},
{
orgid: “1197A11000000000JGU4”,
porgid: “4496”,
orglevel: “03”,
orgname: “信用卡部”
},
{
orgid: “4496”,
porgid: “44”,
orglevel: “02”,
orgname: “广东省分行本部”
}
];
function buildTree(data) {
const map = {};
const rootNodes = [];
// 创建映射表
data.forEach(item => {
map[item.orgid] = {
name: item.orgname,
id: item.orgid,
children: []
};
});
// 遍历数据,构建树形结构
data.forEach(item => {
if (map[item.porgid]) {
map[item.porgid].children.push(map[item.orgid]);
} else {
rootNodes.push(map[item.orgid]);
}
});
return rootNodes;
}
// 调用方法
const transformedData = buildTree(rawData);
console.log(transformedData);