用js写个toTree方法用于将路由数组转成tree,来实现路由嵌套
时间: 2023-05-18 19:05:27 浏览: 219
以下是一个简单的toTree方法的实现,可以将路由数组转换为树形结构:
```javascript
function toTree(routes) {
const map = {};
const roots = [];
// 将所有路由按照id存入map中
routes.forEach(route => {
map[route.id] = route;
route.children = [];
});
// 遍历所有路由,将子路由添加到父路由的children数组中
routes.forEach(route => {
if (route.parentId) {
const parent = map[route.parentId];
if (parent) {
parent.children.push(route);
}
} else {
roots.push(route);
}
});
return roots;
}
```
这个方法接受一个路由数组作为参数,返回一个树形结构的路由数组。每个路由对象都包含一个children数组,用于存放它的子路由。如果一个路由对象的parentId属性为null或undefined,则它是根路由,会被添加到roots数组中。否则,它会被添加到它的父路由的children数组中。
阅读全文