オブジェクト配列をグループ化する最も効率的な方法
P粉310754094
P粉310754094 2023-08-21 14:34:06
0
2
605
<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>
P粉310754094
P粉310754094

全員に返信(2)
P粉029327711

ES6 マップ オブジェクトを使用:

いいねを押す +0
P粉590428357

外部ライブラリの使用を避けたい場合は、次のように groupBy() のネイティブ バージョンを実装するだけです:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート