JSFiddle - React, Tailwind, and code Playground
by notarazi
JavaScript
function groupBy(array, col, value) {
var r = [], o = {};
array.forEach(function (a) {
if (!o[a[col]]) {
o[a[col]] = {};
o[a[col]][col] = a[col];
o[a[col]][value] = 0;
r.push(o[a[col]]);
}
o[a[col]][value] += +a[value];
});
return r;
};
var data = [{Phase:"201611",Step:"Step 1",Task:"Task 1",Value:"5"},{Phase:"201611",Step:"Step 1",Task:"Task 2",Value:"10"},{Phase:"201611",Step:"Step 2",Task:"Task 1",Value:"15"},{Phase:"201611",Step:"Step 2",Task:"Task 2",Value:"20"},{Phase:"201611",Step:"Step 1",Task:"Task 1",Value:"25"},{Phase:"201610",Step:"Step 1",Task:"Task 2",Value:"30"},{Phase:"201610",Step:"Step 2",Task:"Task 1",Value:"35"},{Phase:"201609",Step:"Step 2",Task:"Task 2",Value:"40"}];
document.write('<pre>' + JSON.stringify(groupBy(data, 'Phase', 'Value'), 0, 4) + '</pre>');