//数据结构
{
"settings": {
"timeEpoch": 1234567890123456
},
"roots": [
"5UFZKWUB",
"6FWCZ3I7",
"FLC3POSQ"
],
"nodes": [{
"title": "节点1",
"parentPath": "5UFZKWUB",
"sig": "5UFZKWUB",
"layout": "welcome",
"assetmappings": [{
"asset": "asset_12345678",
"layoutAnchor": "center"
}]
},
{
"title": "节点2",
"parentPath": "6FWCZ3I7",
"sig": "6FWCZ3I7",
"layout": "centerLeftTabs",
"assetmappings": [{
"asset": "",
"layoutAnchor": "center"
}]
},
{
"title": "节点21",
"parentPath": "6FWCZ3I7/YPT7PFNK",
"sig": "YPT7PFNK",
"layout": "centerLeftTabs",
"assetmappings": [{
"asset": "",
"layoutAnchor": "center"
}]
}, {
"title": "节点22",
"parentPath": "6FWCZ3I7/YPT7PFNQ",
"sig": "YPT7PFNQ",
"layout": "centerLeftTabs",
"assetmappings": [{
"asset": "",
"layoutAnchor": "center"
}]
}, {
"title": "节点221",
"parentPath": "6FWCZ3I7/YPT7PFNQ/SIGERASA",
"sig": "SIGERASA",
"layout": "centerLeftTabs",
"assetmappings": [{
"asset": "",
"layoutAnchor": "center"
}]
}, {
"title": "节点2211",
"parentPath": "6FWCZ3I7/YPT7PFNQ/SIGERASA/TTTASDCZ",
"sig": "TTTASDCZ",
"layout": "centerLeftTabs",
"assetmappings": [{
"asset": "",
"layoutAnchor": "center"
}]
},
{
"title": "节点3",
"parentPath": "FLC3POSQ",
"sig": "FLC3POSQ",
"layout": "centerLeftTabs",
"assetmappings": [{
"asset": "",
"layoutAnchor": "center"
}]
}
],
"entities": [{
"sig": ""
}],
"assets": [{
"sig": "asset_2URMUTQR",
"bucket": "applejuice",
"osssig": "DRwMv0MFIke6PRZympuHnrQPcXHwnFiL",
"description": {
"labels": [],
"Previews": []
},
"mutexType": "VIDEO"
},
{
"sig": "asset_X4GGJETL",
"bucket": "applejuice",
"osssig": "fAW5t4SNKmgVgL50rmhjU5sG8pczJfBc",
"description": {
"labels": [],
"Previews": []
},
"mutexType": "PAK"
},
{
"sig": "asset_JQTUHDY4",
"bucket": "applejuice",
"osssig": "3qUfBLxf5EKmr4NtZTsuYzYRPOtgqmuF",
"description": {
"labels": []
},
"mutexType": "IMAGE"
},
{
"sig": "asset_HNAYCA0R",
"bucket": "",
"osssig": "",
"description": {
"labels": [
"LandingPage"
]
},
"mutexType": "META"
}
]
}
//处理方法的调用,content就是上面的整个数据
buildTree(JSON.parse(content).nodes, JSON.parse(content).roots)
//处理扁平化的树节点数据
const buildTree = (nodes, roots) => {
const nodeMap = new Map(); // 节点映射表
// 初始化节点映射表
nodes.forEach(node => {
node.children = []; // 初始化子节点数组
nodeMap.set(node.sig, node); // 将节点添加到映射表中
});
// 构建树状结构
const tree = [];
roots.forEach(rootSig => {
const rootNode = nodeMap.get(rootSig);
if (rootNode) {
tree.push(rootNode);
}
});
// 递归构建子节点
function buildChildren(parentNode, pathLevels) {
const parentSig = parentNode.sig;
nodes.forEach(childNode => {
const pathArray = childNode.parentPath.split('/');
const levels = pathArray.length - 1;
if (levels === pathLevels && pathArray[levels - 1] === parentSig) {
const newNode = nodeMap.get(childNode.sig);
parentNode.children.push(newNode);
buildChildren(newNode, pathLevels + 1); // 递归构建子节点的子节点
}
});
}
// 从根节点开始构建子节点
tree.forEach(rootNode => {
buildChildren(rootNode, 1);
});
return tree;
}
扁平化树结构数据的处理
最新推荐文章于 2024-09-11 17:09:49 发布