JSFiddle - React, Tailwind, and code Playground

by basmaat

HTML

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

CSS

body {
    font-family: monospace;
    white-space: pre-wrap;
}

JavaScript

var nest = function (seq, keys) {
    if (!keys.length)
        return seq;
    var first = keys[0];
    var rest = keys.slice(1);
    return _.mapValues(_.groupBy(seq, first), function (value) { 
        return nest(value, rest)
    });
};

    var countries = 'US,Germany,Netherlands,UK,Japan,Italy,Greece,Belgium,Iceland,Philippines'.split(','),
        salesareas = 'East,West,North,South'.split(','),
        data = [];
    for (var i = 0; i < countries.length; i++) {
        for (var j = 0; j < salesareas.length; j++) {
            data.push({
                country: countries[i],
                salesarea: salesareas[j],
                downloads: Math.round(Math.random() * 20000),
                sales: Math.random() * 10000,
                expenses: Math.random() * 5000
            });
        };    
    };

document.write(JSON.stringify(
    data));

document.write(JSON.stringify(
    nest(data, ['country', 'salesarea'])
, null, 4));