前端js重組樹形結構數據方法封裝


  不知道大家平時工作中,有沒有遇到這樣一種情況:后端接口返回的數據,全都是一維的數組,都是平鋪直敘式的數據,業務需求卻要你實現樹形結構的功能。那么,針對這種情況該怎么辦呢?是跟后台好好溝通一下呢,還是溝通一下呢 :)

  下面我將封裝一種重組樹形結構數據的方法,希望能夠給大家帶來一點幫助!

 1 /**
 2  * 
 3  * @param {Array} data 
 4  * @param {string} pid 子樹找父級的標識,這里面默認子樹的標識為id,如果不為id,就再傳一個子樹id        
 5                        標識
 6  * @param {string} child 自定義子樹字段名稱
 7  * @returns 
 8  */
 9 export function makeTree(data,pid,child){
10   let parents = data.filter(p => p[pid] === 0),
11       children = data.filter(c => c[pid] !== 0);
12   dataToTree(parents, children);
13   return parents;
14  
15   function dataToTree(parents, children){
16     parents.map(p => {
17       children.map((c, i) => {
18         if(c[pid] === p.id){
19           let _children = JSON.parse(JSON.stringify(children));
20           _children.splice(i, 1);
21           dataToTree([c], _children);
22           if(p[child]){
23             p[child].push(c);
24           }else{
25             p[child] = [c];
26           }
27         }
28       })
29     })
30   }
31 }

效果:

 

 

 輸出:

 

 

 以上就完成對樹形結構數據的封裝啦!下一篇是對樹形結構數據降維的方法封裝:https://www.cnblogs.com/coder--wang/p/15042154.html

更多項目中常見的方法封裝,傳送門https://github.com/wangruibin666/wang-utils 

 

腳踏實地行,海闊天空飛~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM