JSFiddle - React, Tailwind, and code Playground
JavaScript
var itemsList = [
{
"id_cat": 4,
"desc cat": "Acessorios para Veiculos",
"id_gr": 1,
"desc gr": "Acessorios Nautica",
"id_sub": 15,
"desc sub": "Bombas"
},
{
"id_cat": 4,
"desc cat": "Acessorios para Veiculos",
"id_gr": 1,
"desc gr": "Acessorios Nautica",
"id_sub": 16,
"desc sub": "Cabos"
},
{
"id_cat": 4,
"desc cat": "Acessorios para Veiculos",
"id_gr": 1,
"desc gr": "Acessorios Nautica",
"id_sub": 17,
"desc sub": "Helices"
},
{
"id_cat": 2,
"desc cat": "Acessorios para Veiculos",
"id_gr": 1,
"desc gr": "Acessorios Nautica",
"id_sub": 17,
"desc sub": "Helices"
}
]
function grouping(items) {
var catHash = {},
catList = [],
i = 0;
for (i = 0; i < items.length; i++) {
var hash = catHash[items[i]["id_cat"]] || {};
hash.groupHash = hash.groupHash || {};
var groupHash = hash.groupHash[items[i]["id_gr"]] || {};
groupHash.subgroupHash = groupHash.subgroupHash || {};
var subgroupHash = groupHash.subgroupHash[items[i]["id_sub"]] || {},
cat = hash.category || {},
group = groupHash.group || {},
subgroup = subgroupHash.subgroup || {};
if (!cat.id) {
cat.id = items[i]["id_cat"];
catList.push(cat);
hash.category = cat;
catHash[cat.id] = hash;
}
if (!cat.name) {
cat.name = items[i]["desc cat"];
}
if (!cat.group) {
cat.group = [];
}
if (!group.id) {
group.id = items[i]["id_gr"];
cat.group.push(group);
groupHash.group = group;
hash.groupHash[group.id] = groupHash;
}
if (!group.name) {
group.name = items[i]["desc gr"];
}
if (!group.subgroup) {
group.subgroup = [];
}
if (!subgroup.id) {
subgroup.id = items[i]["id_sub"];
group.subgroup.push(subgroup);
subgroupHash.subgroup = subgroup;
groupHash.subgroupHash[subgroup.id] = subgroupHash;
}
...