JSFiddle - React, Tailwind, and code Playground

by Steven Senkus

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

JavaScript

const forms = [
    'B',
    'C',
    'C:F',
    'D',
    'D:G',
    'D:H',
    'D:H:I',
    'E',
    "J:K:L:M:N:O:P"
];

function generateFormHierarchy(list) {

    return list.reduce((accum, item) => {
        const itemAsArr = item.split(':');
        const hierarchy = itemAsArr.reduceRight((value, key) => ({
            [key]: value
        }), null);

        return _.merge(accum, hierarchy)
    }, {});
}

const output = JSON.stringify(generateFormHierarchy(forms), null, 4);
console.log(output);