JSFiddle - React, Tailwind, and code Playground

JavaScript

var data = [
    'Business / Finance',
    'Business / Management',
    'Business / Management / Leadership',
    'Business / Team / Leadership'
];

var result = [
    { name: 'Business', trail: null, path: 'Business' },
    { name: 'Finance', trail: 'Business', path: 'Business / Finance' }, 
    { name: 'Management', trail: 'Business', path: 'Business / Management' },
    { name: 'Leadership', trail: 'Business / Management', path: 'Business / Management / Leadership' }, 
    { name: 'Team', trail: 'Business / Team', path: 'Business / Team / Leadership' },
    { name: 'Leadership', trail: 'Business / Team', path: 'Business / Team / Leadership' }
];

var categories = [];

function toArray(path) {
    return path.split(' / ');
}

function getTrail(parts) {
    if (parts.length == 1) {
        return null;
    }    
    parts = parts.slice(0, -1);
    return parts.join(' / ');
}

function exists(name, trail, categories) {
    for (var n = 0; n < categories.length; n++) {
        var category = categories[n];
        if (name === category.name && trail === category.trail) {
            return true;
        }
    }
    return false;
}

function createCategories(path) {
    var parts = toArray(path);
    
    for (var i = 0; i < parts.length; i++) {
        var name = parts[i];
        var trail = getTrail(parts);
        
        if (!exists(name, trail, categories)) {
            categories.push({
                name: name,
                trail: trail,
                path: path                
            });
        }
    }   
}

data.forEach(createCategories);

console.log(categories);