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));