JSFiddle - React, Tailwind, and code Playground
by Arvind Pal
JavaScript
var data = {
taxonomies:[
{name: 'Hemiptera/Mirida/Nalin Sajwan'},
{name: 'Hemiptera/Miridae/Neophloeobia/incisa'},
{name: 'Lepidoptera/Nymphalidae/Ephinephile/rawnsleyi'},
{name: 'a/af1/af1g1/af1g1s1'},
{name: 'a/af1/af1g1/af1g1s2'},
{name: 'a/af1/af1g1/af1g1s3'},
{name: 'a/af1/af1g2/af1g2s1'},
{name: 'a/af1/af1g2/af1g2s2'},
{name: 'a/af2/af2g1/af2g1s1'},
{name: 'a/af2/af2g1/af2g2s1'},
{name: 'a/af3/af3g1/af3g1s1'}
]
};
var taxonomies = data.taxonomies.map(function(v) {
return v.name.split("/");
});
function addToHeirarchy(val, level, heirarchy) {
if (val[level]) {
if (!heirarchy.hasOwnProperty(val[level]))
heirarchy[val[level]] = {};
addToHeirarchy(val, level + 1, heirarchy[val[level]]);
}
}
var working = {};
for (var i = 0; i < taxonomies.length; i++)
addToHeirarchy(taxonomies[i], 0, working);
console.log("json",working);
function remapHeirarchy(item) {
var children = [];
for (var k in item) {
var obj = {
"name" : k
};
var subData = remapHeirarchy(item[k]);
if(subData.length > 0)
obj["children"] = remapHeirarchy(item[k]);
// console.log(k,' obj["children"] ==> ',obj["children"]);
children.push(obj);
}
return children;
}
var heirarchy = {
"name" : "ROOT",
"children" : remapHeirarchy(working)
};
console.log("array",heirarchy);