返回
如何通过JSON数据递归获取精确的路由菜单或树形结构?
前端
2023-11-27 08:17:53
实现方式:
使用JavaScript的filter方法实现树形结构数据的递归遍历获取
// 定义一个递归函数来获取子树形结构数据
function getChildren(data, parentId) {
return data.filter(item => item.parentId === parentId);
}
// 定义一个函数来获取整个树形结构数据
function getTree(data) {
const result = [];
for (let i = 0; i < data.length; i++) {
const item = data[i];
if (item.parentId === null) {
result.push(item);
} else {
const children = getChildren(data, item.id);
item.children = children;
}
}
return result;
}
使用Vue.js框架来处理树形路由菜单的实现
// 定义一个Vue组件来处理树形路由菜单
Vue.component('tree-menu', {
props: ['data'],
template: `
<ul>
<li v-for="item in data">
<a :href="item.link">{{ item.name }}</a>
<tree-menu v-if="item.children" :data="item.children"></tree-menu>
</li>
</ul>
`
});
// 在Vue实例中使用树形路由菜单组件
new Vue({
el: '#app',
data() {
return {
data: [
{
id: 1,
name: 'Home',
link: '/home',
parentId: null
},
{
id: 2,
name: 'About',
link: '/about',
parentId: null
},
{
id: 3,
name: 'Products',
link: '/products',
parentId: null
},
{
id: 4,
name: 'Product 1',
link: '/products/1',
parentId: 3
},
{
id: 5,
name: 'Product 2',
link: '/products/2',
parentId: 3
},
{
id: 6,
name: 'Services',
link: '/services',
parentId: null
},
{
id: 7,
name: 'Service 1',
link: '/services/1',
parentId: 6
},
{
id: 8,
name: 'Service 2',
link: '/services/2',
parentId: 6
}
]
};
}
});
使用以上方法,您可以轻松地通过JSON数据递归获取精确的路由菜单或树形结构,并使用Vue.js框架来处理树形路由菜单的实现。