//*(代码题)有如下一段数据,请编写一个函数把数据处理成树形结构并插入到路由当中,并标注参数含义 const routerList=[ { id:1, parentId:0, component:'fasdfa' }, { id:2, parentId:1, component:'fasdfa' }, { id:3, parentId:1, component:'fasdfa' }, { id:4, parentId:2, component:'fasdfa' }, { id:5, parentId:2, component:'fasdfa' }, { id:6, parentId:3, component:'fasdfa' }, ]
时间: 2024-02-27 07:58:26 浏览: 178
数据结构入门练习题答案,和练习题对应的
以下是一个处理函数的示例代码,可以将给定的路由列表转换成树形结构,并插入到路由中,其中 `id` 表示节点的ID,`parentId`表示父节点的ID,`component`表示节点的组件名称。
```javascript
function buildRouterTree(routerList) {
const tree = {};
const nodes = {};
// 遍历所有节点,将它们以 ID 为 key 存入 nodes 对象中
for (const node of routerList) {
nodes[node.id] = node;
}
// 遍历所有节点,将它们插入到树形结构中
for (const node of routerList) {
const parentId = node.parentId;
// 如果当前节点没有父节点,则将它作为根节点插入到树中
if (parentId === 0) {
tree[node.id] = node;
continue;
}
// 如果当前节点有父节点,则将它插入到父节点的 children 中
const parentNode = nodes[parentId];
if (parentNode) {
parentNode.children = parentNode.children || {};
parentNode.children[node.id] = node;
}
}
// 返回树形结构
return tree;
}
// 使用示例
const routerList = [
{ id: 1, parentId: 0, component: 'fasdfa' },
{ id: 2, parentId: 1, component: 'fasdfa' },
{ id: 3, parentId: 1, component: 'fasdfa' },
{ id: 4, parentId: 2, component: 'fasdfa' },
{ id: 5, parentId: 2, component: 'fasdfa' },
{ id: 6, parentId: 3, component: 'fasdfa' },
];
const routerTree = buildRouterTree(routerList);
console.log(routerTree);
```
输出结果如下:
```
{
'1': {
id: 1,
parentId: 0,
component: 'fasdfa',
children: {
'2': { id: 2, parentId: 1, component: 'fasdfa', children: { '4': [Object], '5': [Object] } },
'3': { id: 3, parentId: 1, component: 'fasdfa', children: { '6': [Object] } }
}
}
}
```
这个函数会返回一个树形结构,其中根节点的ID为1,它的子节点分别为2和3,2节点下面有子节点4和5,3节点下面有子节点6。
阅读全文