オブジェクト配列をグループ化する最も効率的な方法
<p>配列内のオブジェクトをグループ化する最も効率的な方法は何ですか? </p>
<p>たとえば、次のようなオブジェクトの配列があるとします。</p>
<pre class="brush:php;toolbar:false;">[
{ フェーズ: "フェーズ 1"、ステップ: "ステップ 1"、タスク: "タスク 1"、値: "5" },
{ フェーズ: "フェーズ 1"、ステップ: "ステップ 1"、タスク: "タスク 2"、値: "10" },
{ フェーズ: "フェーズ 1"、ステップ: "ステップ 2"、タスク: "タスク 1"、値: "15" },
{ フェーズ: "フェーズ 1"、ステップ: "ステップ 2"、タスク: "タスク 2"、値: "20" },
{ フェーズ: "フェーズ 2"、ステップ: "ステップ 1"、タスク: "タスク 1"、値: "25" },
{ フェーズ: "フェーズ 2"、ステップ: "ステップ 1"、タスク: "タスク 2"、値: "30" },
{ フェーズ: "フェーズ 2"、ステップ: "ステップ 2"、タスク: "タスク 1"、値: "35" },
{ フェーズ: "フェーズ 2"、ステップ: "ステップ 2"、タスク: "タスク 2"、値: "40" }
]</pre>
<p>この情報を表に表示しています。さまざまな方法でグループ化したいのですが、値を合計したいのです。 </p>
<p>Underscore.js の groupby 関数を使用しています。これは便利ですが、SQL の group by のように、それらを「分離」するのではなく「マージ」したいので、ニーズを完全には満たしません。方法。 </p>
<p>私が望んでいるのは、必要に応じて特定の値を合計できることです。 </p>
<p>したがって、<code>Phase</code> でグループ化すると、次のようになります: </p>
<pre class="brush:php;toolbar:false;">[
{ フェーズ: "フェーズ 1"、値: 50 }、
{ フェーズ: "フェーズ 2"、値: 130 }
]</pre>
<p><code>Phase</code> / <code>Step</code> でグループ化すると、次のようになります: </p>
<pre class="brush:php;toolbar:false;">[
{ フェーズ: "フェーズ 1"、ステップ: "ステップ 1"、値: 15 },
{ フェーズ: "フェーズ 1"、ステップ: "ステップ 2"、値: 35 }、
{ フェーズ: "フェーズ 2"、ステップ: "ステップ 1"、値: 55 }、
{ フェーズ: "フェーズ 2"、ステップ: "ステップ 2"、値: 75 }
]</pre>
<p>これを実行できる便利なスクリプトはありますか、それとも Underscore.js を使い続けて、結果オブジェクトをループして合計を実行する必要がありますか? </p>