JSFiddle - React, Tailwind, and code Playground

by _abl

JavaScript

var data = [{"Code":"12345","Name":"foo","Service":"Payments"},
{"Code":"12345","Name":"foo","Service":"Marketing"},
{"Code":"23456","Name":"bar","Service":"Payments"},
{"Code":"23456","Name":"bar","Service":"Development"},
{"Code":"34567","Name":"baz","Service":"Marketing"}];


function formatData(data) {
    var customerMap = {};
    $(data).each(function(index, elem){

        // Get the customer if it is already in the map, else create it
        var customer = customerMap[elem.Code];
        if(!customer) {
            customer = new CustObj(elem.Code, elem.Name);
            customerMap[elem.Code] = customer;
        }

        // Add flags as appropiate
        switch (elem.Service) {
            case 'Payments':
                customer.hasPay = true;
                break;
            case 'Marketing':
                customer.hasMarket = true;
                break;
            case 'Development':
                customer.hasDev = true;
                break;
        }
    });

    // Convert map to array
    var formatedData = [];
    for(var code in customerMap){
        formatedData.push(customerMap[code]);
    }
    return formatedData;
}

function CustObj(code,name,hasPay,hasMarket,hasDev) {
  this.code = code;
  this.name = name;
  this.hasPay = hasPay;
  this.hasMarket = hasMarket;
  this.hasDev = hasDev;
}

$("body").text(JSON.stringify(formatData(data)));