JSFiddle - React, Tailwind, and code Playground
JavaScript
const allCategories = [
{
"id": "3RvTc12p4TiolAaSrzEz",
"data": {
"parentID": null,
"forUse": false,
"name": "Decor",
"childrenID": []
}
},
{
"id": "FdRQpC4QWgswwT9FCyMm",
"data": {
"childrenID": [],
"parentID": "xjvhLdXSqpGz1SScgE6F",
"name": "Jeans",
"forUse": true
}
},
{
"id": "P5Kl0ePlcmghCf20HNCI",
"data": {
"parentID": null,
"childrenID": [],
"forUse": false,
"name": "Kids"
}
},
{
"id": "phYvPrBXFmXxz5uIbhQb",
"data": {
"name": "Jeans",
"forUse": true,
"parentID": "xjvhLdXSqpGz1SScgE6F",
"childrenID": []
}
},
{
"id": "xjvhLdXSqpGz1SScgE6F",
"data": {
"parentID": null,
"childrenID": [
"FdRQpC4QWgswwT9FCyMm",
"phYvPrBXFmXxz5uIbhQb"
],
"forUse": false,
"configurationID": "FWlMKfaFZFOsJuWOd1eY",
"name": "Clothes"
}
}
];
const tree = [];
allCategories.forEach(function (a) {
if (!this[a.id]) {
this[a.id] = { id: a.id };
tree.push(this[a.id]);
}
this[a.id].data = a.data;
this[a.id].data.childrenID = a.data.childrenID.map(function (b) {
this[b] = this[b] || { id: b };
return this[b];
}, this);
}, Object.create(null));
document.write('<pre>' + JSON.stringify(tree, 0, 4) + '</pre>');