1. 程式人生 > >數據處理為樹形結構以及多級菜單的邏輯分析

數據處理為樹形結構以及多級菜單的邏輯分析

value data 關系 type 二級 相同 item 樹形結構 調用

菜單數據源處理:

//數據源組裝成樹形結構(一級與後面的級邏輯相同)
邏輯:遍歷所有數據,上級與下次的聯動關系相等則數據存放,如果不為最後一級,遞歸
function getTree(source, data, pid) {
var length = source.length;
for (var i = 0; i < length; i++) {
var item = source[i];
if (item.pid == pid) {
var obj = {};
obj.title = item.menuName;
obj.value = item.id;
obj.data = [];
data.push(obj);
if (item.menuType != "2") {
arguments.callee(source, obj.data, item.id)
}
}
}
}

//數據源組裝成樹形結構(一級與後面的級邏輯不同)
邏輯:開始遍歷所有數據,根據一級關系找出一級,調用二級方法;將2級方法抽離出來,在2級方法中遍歷所有數據,並根據一級與2級的關系找出2級
function first(data,arr,0){
for(var i =0;i<data.length;i++){
if(data[i].pid == 0){
arr.push(data[i]);
two(data,data[i].id);
}
}
}
function two (data,pid){
var arr = [];
for(var i = 0;i<data[i].length;i++){
if(data[i].pid == pid){
arr.push(data[i])
}
}
return arr;
}

數據處理為樹形結構以及多級菜單的邏輯分析