当前位置: 首页 > Web前端 > JavaScript

找到数组“树”的所有路径

时间:2023-03-27 02:09:03 JavaScript

需要导航栏或菜单栏组件,从最外层到元数据目标值的路径上的所有文本都高亮显示。所以你需要找出通过目标值的路径是什么?示例元数据数据的结果如下:constdataSource=[{label:'Homepage',value:1,},{label:'ProductCategory',value:2,child:[{label:'Apparel',value:21,child:[{label:'精美女装',value:211,},],},{label:'地方特产',value:22,child:[{label:'河南特产',value:221,child:[{label:'方中山胡辣汤',value:2211,},{label:'红烧面',value:2212,},],},{label:'上海特产',value:222,},],}]},{label:'我的',value:3,child:[{label:'基本信息',value:31,},{label:'我的订单',value:33,孩子:[{label:'Allorders',value:331,},{label:'tobereceived',value:332,},],}]}]找出这个元数据的所有路径:/***获取所有路径*/constgetAllValuePaths=(dataSource)=>{letresult=[]if(!dataSource||dataSource.length===0)return[]constconstructPaths=(data,path)=>{data.forEach(({值,child})=>{path.push(value)if(!child||child.length===0){result.push(JSON.parse(JSON.stringify(path)))}else{constructPaths(child,path)}path.pop()})}constructPaths(dataSource,[])returnresult}优化所有路径方法,找出指定目标值的路径:/***获取指定目标路径*/constgetValuePathsByTarget=(dataSource,target)=>{letresult=[]if(!dataSource||dataSource.length===0||!target)return[]constconstructPaths=(data,target,path)=>{数据。forEach(({value,child})=>{path.push(value)if(valuee===target){result=JSON.parse(JSON.stringify(path))return}if(child&&child.length){constructPaths(child,target,path)}path.pop()})}constructPaths(dataSource,target,[])返回结果}自测结果: