I want to convert flat list array to tree view array based on node number in Javascript. Node number represent child array element. e.g. nodenumber 1.1 represent the children of element "A" and nodenumber 1.1.1 represent the children of element "B" and so on.
input
[ { "name": "A", "nodeNumber": "1" }, { "name": "B", "nodeNumber": "1.1" }, { "name": "C", "nodeNumber": "1.1.1" }, { "name": "D", "nodeNumber": "1.2" }, { "name": "E", "nodeNumber": "1.2.1" }, { "name": "F", "nodeNumber": "1.2.2" } ]
expected output
{ "name": "A", "nodeNumber": "1", "children" :[ { "name": "B", "nodeNumber": "1.1", "children" :[ { "name": "C", "nodeNumber": "1.1.1" } ] }, { "name": "D", "nodeNumber": "1.2", "children" :[ { "name": "E", "nodeNumber": "1.2.1" }, { "name": "F", "nodeNumber": "1.2.2" } ] } ] }
There is no hierarchy limit.
I have tried to make unique as key for each element and tried to go next step but I got stuck there:
var res = [];
var flatList = [];
input.forEach(loopContent);
function loopContent(item,index,arr) {
let node = item.nodeNumber.split('.').join('_');
item['flat_id'] = node;
res[node] = item; flatList.push(node);
}
Please help me