扁平数据转树状数据最快方法
示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var menu = [{
id: 1,
menuName: '地图显示',
path: '/view',
sort: 1,
superior: null,
components: '/common/secondLevelMenu',
},
{
id: 2,
sort: 1,
menuName: '基础地图',
path: '/view3',
superior: 1,
components: '/common/secondLevelMenu2',
},
{
id: 3,
sort: 1,
menuName: '基础地图',
path: '/view3',
superior: 2,
components: '/common/secondLevelMenu2',
},
{
id: 4,
sort: 1,
menuName: '基础地图',
path: '/view3',
superior: 3,
components: '/common/secondLevelMenu2',
}
]
function buildTree (data) {
const map = {};
const tree = [];
data.forEach(node => {
map[node.id] = node;//让枚举数据和node公用同一个内存 主要
node.children = [];
});
data.forEach(node => {
if (node.superior) {
map[node.superior].children.push(node);
} else {
tree.push(node);
}
});
return tree;
}
console.log(buildTree(menu));
</script>
</body>
</html>