首页 > 编程语言 > 详细

将一个数组展为树形结构的数据并将其展示在页面上

时间:2019-05-30 16:53:14      阅读:316      评论:0      收藏:0      [点我收藏+]
const departments=[
    {
        id:1,
        name:‘流程与信息管理中心‘,
        level:‘0.1‘, 
        parent_id:0,
        seq:1,
        mtime:‘2019-03-02 16:20:10‘,
        ctime:‘2019-03-02 16:20:10‘,
        muser_id:12,
        cuser_id:10
    },
    {
        id:2,
        name:‘架构与流程管理部‘,
        level:‘0.1‘, 
        parent_id:1,
        seq:1,
        mtime:‘2019-03-02 16:20:10‘,
        ctime:‘2019-03-02 16:20:10‘,
        muser_id:12,
        cuser_id:10
    },
    {
        id:3,
        name:‘流程管理支持组‘,
        level:‘0.1.2‘, 
        parent_id:2,
        seq:1,
        mtime:‘2019-03-02 16:20:10‘,
        ctime:‘2019-03-02 16:20:10‘,
        muser_id:12,
        cuser_id:10
    },
    {
        id:4,
        name:‘流程管理组‘,
        level:‘0.1.2‘, 
        parent_id:2,
        seq:2,
        mtime:‘2019-03-02 16:20:10‘,
        ctime:‘2019-03-02 16:20:10‘,
        muser_id:12,
        cuser_id:10
    },
    {
        id:5,
        name:‘数据与技术平台部‘,
        level:‘0.1‘, 
        parent_id:1,
        seq:3,
        mtime:‘2019-03-02 16:20:10‘,
        ctime:‘2019-03-02 16:20:10‘,
        muser_id:12,
        cuser_id:10
    },
    {
        id:6,
        name:‘软件开发组‘,
        level:‘0.1.5‘, 
        parent_id:5,
        seq:1,
        mtime:‘2019-03-02 16:20:10‘,
        ctime:‘2019-03-02 16:20:10‘,
        muser_id:12,
        cuser_id:10
    },
    {
        id:7,
        name:‘应用集成组‘,
        level:‘0.1.5‘, 
        parent_id:5,
        seq:2,
        mtime:‘2019-03-02 16:20:10‘,
        ctime:‘2019-03-02 16:20:10‘,
        muser_id:12,
        cuser_id:10
    },
    {
        id:8,
        name:‘数据管理组‘,
        level:‘0.1.5‘, 
        parent_id:5,
        seq:3,
        mtime:‘2019-03-02 16:20:10‘,
        ctime:‘2019-03-02 16:20:10‘,
        muser_id:12,
        cuser_id:10
    },

]

constructTree=(arr)=>{
        let result = []
        if(!Array.isArray(arr)) {
            return result
        }
        arr.forEach(item => {
            delete item.children;
        });
        let map = {};
        arr.forEach(item => {
            map[item.id] = item;
        });
        arr.forEach(item => {
            let parent = map[item.parent_id];
            if(parent) {
                (parent.children || (parent.children = [])).push(item);
            } else {
                result.push(item);
            }
        });
        let theArr=[]; //将对象转为数组,方便后续的操作
        for(let key in map){
            if(map[key].children==undefined||map[key].parent_id!=0){
                delete map[key];
            }else{
                theArr.push(map[key]);
            }
        }
        return theArr;
    }
 renderTreeNodes = data =>
        data.map(item => {
        if (item.children) {
            return (
            <TreeNode title={item.name} key={item.id} dataRef={item}>
                {this.renderTreeNodes(item.children)}
            </TreeNode>
            );
        }
        return  (
            <TreeNode title={item.name} key={item.id} dataRef={item} />
            );
        });

render(){
  const departmentTree=this.constructTree(departments);
return(
//ant design的树形控件,详情可以查看ant design官网
    <Tree
                    onExpand={this.onExpand}
                    expandedKeys={this.state.expandedKeys}
                    autoExpandParent={this.state.autoExpandParent}
                    onSelect={this.onSelect}
                    selectedKeys={this.state.selectedKeys}
                    onSelect={this.onSelect}
                >
                   {this.renderTreeNodes(departmentTree)}
     </Tree>
                
  )
}

 最后的效果:

技术分享图片

将一个数组展为树形结构的数据并将其展示在页面上

原文:https://www.cnblogs.com/LULULI/p/10950521.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!