[英]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.