JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://neue.cc/linq.min.js"></script>

JavaScript

var data = [ 
    { Phase: "Phase 1", Step: "Step 1", Task: "Task 1", Value: "5" },
    { Phase: "Phase 1", Step: "Step 1", Task: "Task 2", Value: "10" },
    { Phase: "Phase 1", Step: "Step 2", Task: "Task 1", Value: "15" },
    { Phase: "Phase 1", Step: "Step 2", Task: "Task 2", Value: "20" },
    { Phase: "Phase 2", Step: "Step 1", Task: "Task 1", Value: "25" },
    { Phase: "Phase 2", Step: "Step 1", Task: "Task 2", Value: "30" },
    { Phase: "Phase 2", Step: "Step 2", Task: "Task 1", Value: "35" },
    { Phase: "Phase 2", Step: "Step 2", Task: "Task 2", Value: "40" }
];

var linq = Enumerable.From(data);
var result =
    linq.GroupBy(function(x){return x.Phase;})
		.Select(function(x){return { Phase:x.Key(), Value: x.Sum(function(y){return y.Value|0;}) };})
		.ToArray();
console.log(result);
alert(JSON.stringify(result));