离开岛的鱼

JS实现 EasyUI-Tree 数据格式转换

2017/09/11

版权声明:本文为博主原创文章,未经博主允许不得转载。

images

废话不多说,先上代码:

loadFilter:function(content){
            let bufferData = {};// 缓存数据
            let node = null;
            let parentNode = null;
            for (let i = 0; i < content.length; i++) {
                node = content[i];//当前节点
                parentNode = bufferData[node.parentId];//父节点
                if (parentNode == undefined) { // 如果在树结构数据中不存在父节点则创建一个
                    parentNode = bufferData[node.parentId] = {children: []};
                }
                if (node.leaf == false) {
                    if (bufferData[node.id] == undefined){                                                
                       node.children = [];  //如果自己的位置上没有代替者则增加一个未来装载子节点的容器                      
                    }else
                        node.children = bufferData[node.id].children;//如果有代理者证明有子节点在自身之前被遍历,将代理者搜集的内容拷贝过来
                    bufferData[node.id] = node;//剔除代理者
                }
                parentNode.children.push(node);
            } 
            return [content[0]]
   },

返回的数据需要有自身 id ,父节点 parentId 叶子节点的判断 leaf

原始数据:

[
  {"id":1,"parentId":-1,"leaf":0,"text":"班级"},
  {"id":2,"parentId":1,"leaf":0,"text":"班长"},
  {"id":3,"parentId":1,"leaf":0,"text":"副班长"},
  {"id":4,"parentId":2,"leaf":1,"text":"学生A"},
  {"id":5,"parentId":2,"leaf":1,"text":"学生B"},
  {"id":6,"parentId":3,"leaf":1,"text":"学生C"}
]

转换后的数据:

[
    {
        "id":1,
        "parentId":-1,
        "leaf":0,
        "text":"班级",
        "children":[
            {
                "id":2,
                "parentId":    1,
                "leaf":0,
                "text":"班长",
                "children":[
                    {
                        "id":4,
                        "parentId":2,
                        "leaf":1,
                        "text":"学生A"
                    },{
                        "id":5,
                        "parentId":2,
                        "leaf":1,
                        "text":"学生B"
                    }
                ]
            },
            {
                "id":3,
                "parentId":1,
                "leaf":0,
                "text":"副班长",
                "children":[
                    {
                        "id":6,
                        "parentId":3,
                        "leaf":1,
                        "text":"学生C"
                    }
                ]
            }
        ]
    }
]