代碼如下
/** * 遞歸獲取路由的所有路徑 * @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' ]