JSFiddle - React, Tailwind, and code Playground
by Steven Senkus
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
JavaScript
function generateFormHierarchy(formList, parentForm) {
return formList.reduce((accum, item) => {
const itemAsArr = item.slice(parentForm.id.strAddr.length + 1).split(':');
console.log(itemAsArr);
const hierarchy = itemAsArr.reduceRight((value, key, index, arr) => {
// TODO; explain this
const hierarchyKey = parentForm.id.strAddr + ':' + arr.slice(0, index + 1).join(':');
return {
[hierarchyKey]: value
};
}, null);
return _.merge(accum, hierarchy);
}, {});
}
let formList = [
"S2018US1040PER$FSCHC[1]:F8829[1]:F8829W2",
"S2018US1040PER$FSCHC[1]:F8829[1]:F8829W2:ASDF",
"S2018US1040PER$FSCHC[1]:F8829[1]:XYZQ123"
];
let parentForm = {
id: {
strAddr: 'S2018US1040PER$FSCHC[1]:F8829[1]'
}
};
let output = JSON.stringify(generateFormHierarchy(formList, parentForm), null, 4);
console.log(output);