簡單的前端樹形資料整理
阿新 • • 發佈:2019-02-03
簡單樹形結構資料處理
<script type="text/javascript">
// 1. 準備資料: 系統->我的面板,內容管理->(個人資訊,檔案管理)(統計分析)
var nodes = [
{
'id':'1',
'name':'系統',
'pid' : '0'
},
{
'id' :'2',
'name':'我的面板',
'pid' : '1'
},
{
'id':'3',
'name':'內容管理',
'pid' : '1'
},
{
'id':'4',
'name' :'個人資訊',
'pid' : '2'
},
{
'id':'5',
'name':'檔案管理',
'pid' : '2'
},
{
'id' : '6',
'name' : '統計分析',
'pid' : '3'
}
];
var tree = new Node(0, null); // 首先準備一個數的頭
// 處理資料,整理成樹,這裡適應的環境是必須要父節點排在前面(無法保證這個情況的話,可以採用迴圈排除的方式處理;或者其他方法處理)
for (var i = 0;i < nodes.length; i++)
{
// 1. 查詢父節點
var node = tree.find(nodes[i].pid);
if (typeof(node) == undefined) { continue; }
node.append(new Node(nodes[i].id,nodes[i]));
}
console.log(tree);
// 樹結點
function Node(id,data)
{
this.id = id;
this.data = data;
this.parent = null;
this.children = [];
this.find = function (id) {
// 這裡使用遞迴的方式進行id這個結點的查詢
if (id == this.id) return this;
for (var i = 0;i < this.children.length; i++)
{
var node = this.children[i].find(id);
if (node != null) return node;
}
}
this.append = function (node) {
this.children.push(node); // 向父結點中新增子節點
node.parent = this; // 設定子結點的父親
}
}
</script>