將一條一條的json轉成樹形結構
阿新 • • 發佈:2019-02-02
本人寫的一個小例子,閒話不說,上程式碼
這個主要知識點就是物件的引用關係,只需要兩個迴圈,就將列表式的結構資料,轉成的樹形結構。var nodes = [ {"id":2,"cname":"第一級1","ipid":0,"ccode":"1"}, {"id":3,"cname":"第一級1","ipid":2,"ccode":"1"}, {"id":4,"cname":"第一級1","ipid":2,"ccode":"1"}, {"id":5,"cname":"第一級1","ipid":4,"ccode":"1"}, {"id":6,"cname":"第一級1","ipid":3,"ccode":"1"}, {"id":7,"cname":"第一級1","ipid":0,"ccode":"1"} ] function transDate(list,idstr,pidstr){ var result = [],temp = {}; for(i = 0; i < list.length; i++){ temp[list[i][idstr]]=list[i];//將nodes陣列轉成物件型別 } for(j=0; j<list.length; j++){ tempVp = temp[list[j][pidstr]]; //獲取每一個子物件的父物件 if(tempVp){//判斷父物件是否存在,如果不存在直接將物件放到第一層 if(!tempVp["nodes"]) tempVp["nodes"] = [];//如果父元素的nodes物件不存在,則建立陣列 tempVp["nodes"].push(list[j]);//將本物件壓入父物件的nodes陣列 }else{ result.push(list[j]);//將不存在父物件的物件直接放入一級目錄 } } return result; } console.log(transDate(nodes,"id","ipid")); //傳入的值 列表 ,本物件的id,父物件的id document.write(JSON.stringify(transDate(nodes,"id","ipid")));