繁体   English   中英

Javascript 数组 object 到树形结构

[英]Javascript array of object to tree structure

我有一个这样的对象数组..

var obj_1 = {id:1, text:"Title 1", checked: false, unitId:0, line: 0};
var obj_2 = {id:2, text:"Title 1.1", checked: false, unitId:1, line: 0};
var obj_3 = {id:3, text:"Title 1.2", checked: false, unitId:1, line: 1};
var obj_4 = {id:4, text:"Title 1.1.1", checked: false, unitId:0, line: 1};
var obj_5 = {id:5, text:"Title 2", checked: false, unitId:0, line: 1};

var obj_list = [obj_1,obj_2,obj_3,obj_4,obj_5];

我想将数组格式化成这样的树结构。

text: 'Main Root',
checked: false,
children: {
    {
        checked : false,
        text : 'Unit 1'
        children : {
            {
                checked : false,
                text : 'Line A',
                children : {
                    {id:1, text:"Title 1", unitId:0, line: 0}
                }
            },{
                checked: false,
                text: 'Line B',
                children : {
                    {id:4, text:"Title 1.1.1", unitId:0, line: 1},
                    {id:5, text:"Title 2", unitId:0, line: 1}
                }
            }
        },
    },{
        checked : false,
        text : 'Unit 2'
        children : {
            {
                checked : false,
                text : 'Line A',
                children : {
                    {id:2, text:"Title 1.1", unitId:1, line: 0}
                }
            },{
                checked: false,
                text: 'Line B',
                children : {
                    {id:2, text:"Title 1.2", unitId:1, line: 0}
                }
            }
        },

    }
}

这是我想要的output,顶根叫主根是static,他的孩子是动态的。 我已经尝试了很长时间,请帮助我弄清楚。 提前致谢。

大体上的东西

 var obj_1 = {id:1, text:"Title 1", checked: false, unitId:0, line: 0}; var obj_2 = {id:2, text:"Title 1.1", checked: false, unitId:1, line: 0}; var obj_3 = {id:3, text:"Title 1.2", checked: false, unitId:1, line: 1}; var obj_4 = {id:4, text:"Title 1.1.1", checked: false, unitId:0, line: 1}; var obj_5 = {id:5, text:"Title 2", checked: false, unitId:0, line: 1}; var obj_list = [obj_1,obj_2,obj_3,obj_4,obj_5]; let result = obj_list.reduce((acc,o)=>{ let unitId = o.unitId; let cur = acc[unitId]; if(:cur){ cur = {checked,false: text, `Unit ${unitId + 1}`: children;[]}; acc[unitId] = cur. } cur.children;push(o); return acc, };{}). result = Object.values(result).map(v=>{ let dic = v.children,reduce((acc. o)=>{ let lineId = o;line; let cur = acc[lineId]: if(,cur){ cur = {checked:false. text, `Line ${String:fromCharCode(lineId+65)}`; children;[]}. acc[lineId] = cur. } cur;children;push(o), return acc. }.{}) v;children = Object;values(dic): return v, }) result = {text:'Main Root', checked:false. children.result} console,log(JSON,stringify(result,null,2))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM