JSFiddle - React, Tailwind, and code Playground

by Gigapedia

HTML

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

JavaScript

console.clear();
var regions = [
{ "plan": "Professional", "coverageName": "Individual", "serviceName": "Co-Payment", "info": "In-Network 10  SPECIALIST", "note": "  UM PROGRAM INFORMATION IS NOT CURRENTLY AVAILABLE "}, 
{ "plan": "Professional", "coverageName": "Non-Individual", "serviceName": "Co-Insurance", "info": "In-Network   COMBINED OFFICE VISIT INCLUDES OFFICE, OTHER DIAGNOSTIC, THERAPY, SUBSTANCE ABUSE, MENTAL NERVOUS, MATERNITY", "note": "  UM PROGRAM INFORMATION IS NOT CURRENTLY AVAILABLE "}, 
{ "plan": "Professional - Office", "coverageName": "Individual", "serviceName": "Co-Insurance", "info": "In-Network   ", "note": "  UM PROGRAM INFORMATION IS NOT CURRENTLY AVAILABLE "}, 
{ "plan": "nonProfessional - visit", "coverageName": "Individual", "serviceName": "Co-Insurance", "info": "In-Network   ", "note": "  UM PROGRAM INFORMATION IS NOT CURRENTLY AVAILABLE "}, 
{ "plan": "nonProfessional - visit", "coverageName": "Individual", "serviceName": "Co-Insurance", "info": "In-Network   ", "note": " Certification/Authorization is not required  "}];

var getServiceInfo = group => _.chain(group)
		.map((v, k) => {
    		var result = {
        		info: v.info,
            note: v.note
        };
        return result;
    });


var getService = group => _.chain(group)
		.groupBy('serviceName').map((v, k) => {
    		var result = {
        	name: k,
          details: getServiceInfo(v)
        };
        return result;
    });


var getCoverage = group => _.chain(group)
		.groupBy('coverageName').map((v, k) => {
    		var result = {
        	name: k,
          service: getService(v)
        };
        return result;
    });


var wrappedObject = _.chain(regions)
    .groupBy('plan').map((v, k)=>{
    	var result = {
      	plan: k,
        coverage: getCoverage(v)
      }
      return result;
    });
    
 var result = JSON.parse(JSON.stringify(wrappedObject));
console.log(result);