JSFiddle - React, Tailwind, and code Playground

HTML

<button onclick="doMerge()">Merge</button>

JavaScript

function mergeData(data) {
    var outp = {};

    // loop through each object and add
    for (var i = 0; i < data.length; i++) {
        var obj = data[i];
        if (outp.hasOwnProperty(obj.country)) {
            if (outp[obj.country].hasOwnProperty(obj.district)) {
                if (outp[obj.country][obj.district].hasOwnProperty(obj.ward)) {
                    if (outp[obj.country][obj.district][obj.ward].hasOwnProperty(obj.county)) {
                        outp[obj.country][obj.district][obj.ward][obj.county].push(obj.company);
                    }
                    else {
                        if (obj.county == "" || obj.county == null) {
                            if (Array.isArray(outp[obj.country][obj.district][obj.ward])) {
                                outp[obj.country][obj.district][obj.ward].push(obj.company);
                            }
                            else {
                                outp[obj.country][obj.district][obj.ward] = [obj.company];
                            }
                        }
                        else {
                            outp[obj.country][obj.district][obj.ward][obj.county] = [obj.company];
                        }
                    }
                }
                else {
                    outp[obj.country][obj.district][obj.ward] = {};
                    outp[obj.country][obj.district][obj.ward][obj.county] = [obj.company];                    
                }
            } else {
                outp[obj.country][obj.district] = {};
                outp[obj.country][obj.district][obj.ward] = {};
                outp[obj.country][obj.district][obj.ward][obj.county] = [obj.company];
            }
        } else {
            outp[obj.country] = {};
            outp[obj.country][obj.district] = {};
            
            if (obj.county == "") {
                outp[obj.country][obj.district][obj.ward] = [obj.company];
            }
            else {
               ...