1. 程式人生 > >簡單的前端樹形資料整理

簡單的前端樹形資料整理

簡單樹形結構資料處理

<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>

這裡寫圖片描述