11月28, 2021

Javascript中扁平化数据结构和JSON树形结构转换

在做后台管理系统的过程,我们会遇到很多的数据格式需要处理.有时候需要将扁平化的数据结构转成树形结构,有时候需要将树形结构进行扁平化处理.记录下项目过程中的处理方法:

扁平化数据转树形结构

例如我们在做管理系统的菜单时候.后端返回的数据结构就是扁平化的.可能我们就需要转成树形结构的格式:

let flatArr = [
        {id:1,title:'标题1',parent_id:0},
        {id:2,title:'标题2',parent_id:0},
        {id:3,title:'标题2-1',parent_id:2},
        {id:4,title:'标题3-1',parent_id:3},
        {id:5,title:'标题4-1',parent_id:4},
        {id:6,title:'标题2-2',parent_id:2},
];
    // 扁平化的数组结构 转 JSON的树形结构
    function conver(list) {
        const result = [];
        const rmap = list.reduce((pre,cur)=>{
            pre[cur.id] = cur;
            return pre;
        },{});

        for(let item of list) {
            if(item.parent_id===0) {
                result.push(item);
                continue;
            }

            if(item.parent_id in rmap) {
                const parent = rmap[item.parent_id];
                parent.children = parent.children || [];
                parent.children.push(item);
            }
        }
        return result;
    }
    const res = conver(flatArr);
    console.log(res);

树形结构数扁平化

例如在处理级联菜单选择的时候,可能后端返回的是树形结构,我们要扁平化,进行不同的级联选择,就需要将树形结构数据扁平化,然后处理不同的下拉选项

如下图:

控制台打印结果:

image.png

本文链接:https://901web.com/post/array-tree-data.html

-- EOF --

Comments

请在后台配置评论类型和相关的值。