代码如下
/** * 递归获取路由的所有路径 * @param router 路由列表 * @param pp 父级路径path parentPath * @return []string */ function getPath(router,pp) { var arr = []; pp = pp || '' for(let r of router){ let path = r.path let children = r.children if(pp){ path = `${pp}/${path}` } // 如果有子元素,不添加父元素的路径 if(children && children.length > 0){ arr = arr.concat(getPath(children,path)) }else{ arr.push(path) } } return arr; };
测试代码如下
// 测试数据
var router = [ { path: "/test", children: [ { path: "test2" }, { path: "test2", children:[ { path:'test3' }, { path: 'test3-1' } ] } ] } ];
// 测试结果 let res = getPath(router); //[ '/test/test2', '/test/test2/test3', '/test/test2/test3-1' ]