根據公共屬性對物件進行分組是資料處理中的常見任務。此程式碼片段提供了一種使用普通 JavaScript 方法對陣列中的物件進行分組的有效解決方案。
雖然 Underscore.js 提供了 groupBy 函數,但實現可能不如果您需要「合併」結果而不是單獨的群組,則適合。
以下腳本定義一個對物件陣列進行操作的groupBy 函數:
var groupBy = function(xs, key) { return xs.reduce(function(rv, x) { (rv[x[key]] = rv[x[key]] || []).push(x); return rv; }, {}); };
按🎜>
用法範例const data = [ { Phase: "Phase 1", Step: "Step 1", Task: "Task 1", Value: "5" }, ... ]; const groupedByPhase = groupBy(data, 'Phase');
按一下」將物件分組:
{ "Phase 1": [ { Phase: "Phase 1", Step: "Step 1", Task: "Task 1", Value: "5" }, ... ], "Phase 2": [ { Phase: "Phase 2", Step: "Step 1", Task: "Task 1", Value: "25" }, ... ] }
groupedByPhase將包含:
const groupedByPhaseStep = _(groupedByPhase).values().map(phase => { return groupBy(phase, 'Step'); }).value();
進一步分組「步驟」:
[ { "Phase": "Phase 1", "Step": "Step 1", "Value": 15 }, ... ]
以上是如何使用普通方法在 JavaScript 中有效地對物件陣列進行分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!