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;
    }
...