1. 程式人生 > >json資料轉換為樹形json

json資料轉換為樹形json

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")));