Najbardziej skuteczna metoda grupowania na tablicy obiektów

Jaki jest najbardziej wydajny sposób grupowania obiektów w tablicy?

Na przykład, biorąc pod uwagę tę tablicę obiektów:

[ 
    { 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" }
]

Wyświetlam te informacje w tabeli. Chciałbym pogrupować różne metody, ale chcę podsumować wartości.

Używam Underscore.js do funkcji grupowania, co jest pomocne, ale nie robi całej sztuczki, ponieważ nie chcę, żeby „podzieliły się”, ale „połączyły”, bardziej jak SQLgroup by metoda.

To, czego szukam, będzie w stanie sumować określone wartości (jeśli są wymagane).

Więc jeśli zrobię groupbyPhase, Chcę otrzymywać:

[
    { Phase: "Phase 1", Value: 50 },
    { Phase: "Phase 2", Value: 130 }
]

A jeśli zrobię groupyPhase / Step, Otrzymam:

[
    { Phase: "Phase 1", Step: "Step 1", Value: 15 },
    { Phase: "Phase 1", Step: "Step 2", Value: 35 },
    { Phase: "Phase 2", Step: "Step 1", Value: 55 },
    { Phase: "Phase 2", Step: "Step 2", Value: 75 }
]

Czy jest do tego przydatny skrypt, czy też powinienem trzymać się Underscore.js, a następnie przechodzić przez wynikowy obiekt, aby sam wykonać sumy?

questionAnswers(30)

yourAnswerToTheQuestion