Maison > interface Web > js tutoriel > Comment Underscore.js peut-il regrouper et additionner efficacement des données dans un tableau d'objets ?

Comment Underscore.js peut-il regrouper et additionner efficacement des données dans un tableau d'objets ?

Barbara Streisand
Libérer: 2024-12-28 03:56:10
original
730 Les gens l'ont consulté

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

GroupBy efficace pour un tableau d'objets à l'aide de Underscore.js

Le regroupement de données dans un tableau d'objets est essentiel pour agréger et analyser les informations. Ceci est particulièrement important lorsque vous travaillez avec des données structurées. Parmi diverses méthodes, Underscore.js offre une solution puissante pour regrouper des objets en fonction de critères spécifiques.

Dans ce cas, vous souhaitez regrouper les objets selon diverses combinaisons de champs, telles que Phase et Étape, tout en additionnant les valeurs correspondantes. Underscore.js fournit une fonction groupBy qui peut gérer cette tâche efficacement.

Voici un exemple d'utilisation de Underscore.js pour regrouper le tableau d'objets par 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');
Copier après la connexion

Cette opération donne un objet dont les clés sont les valeurs distinctes de Phase et les valeurs sont des tableaux d'objets appartenant à chaque phase. Pour calculer la valeur totale de chaque phase, vous pouvez utiliser la fonction de réduction comme suit :

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

De même, vous pouvez regrouper les objets par n'importe quelle combinaison de champs en utilisant le même principe. En tirant parti de la fonction groupBy d'Underscore.js, vous pouvez regrouper efficacement vos données, fournissant ainsi des informations précieuses sur votre ensemble de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal