首頁 >web前端 >js教程 >Underscore.js 如何有效地將物件陣列中的資料分組和總和?

Underscore.js 如何有效地將物件陣列中的資料分組和總和?

Barbara Streisand
Barbara Streisand原創
2024-12-28 03:56:10736瀏覽

How Can Underscore.js Efficiently Group and Sum Data in an Array of Objects?

使用Underscore.js 對物件陣列進行高效GroupBy

對物件陣列中的資料進行分組對於聚合和分析資訊至關重要。這在處理結構化資料時尤其重要。在各種方法中,Underscore.js 提供了一個強大的解決方案,用於根據特定條件對物件進行分組。

在這種情況下,您希望透過各種欄位組合(例如 Phase 和 Step)對物件進行分組,同時也求和對應的值。 Underscore.js 提供了一個 groupBy 函數,可以有效率地處理此任務。

以下是如何使用Underscore.js 按Phase 對物件陣列進行分組的範例:

const 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" }
];

const groupedByPhase = _.groupBy(data, 'Phase');

此運算產生一個對象,其中鍵是Phase 的不同值,值是屬於每個階段的物件數組。要計算每個階段的總值,您可以使用reduce函數,如下所示:

const phaseTotals = _.map(groupedByPhase, function(phaseData) {
    return {
        Phase: phaseData[0].Phase,
        Value: _.reduce(phaseData, function(memo, object) { 
            return memo + Number(object.Value); 
        }, 0)
    };
});

同樣,您可以使用相同的原理按任意欄位組合對物件進行分組。透過利用 Underscore.js 的 groupBy 函數,您可以有效地將資料分組,從而為資料集提供有價值的見解。

以上是Underscore.js 如何有效地將物件陣列中的資料分組和總和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn