Maison > interface Web > js tutoriel > Comment puis-je regrouper efficacement un tableau d'objets en JavaScript à l'aide d'une approche Vanilla ?

Comment puis-je regrouper efficacement un tableau d'objets en JavaScript à l'aide d'une approche Vanilla ?

Susan Sarandon
Libérer: 2024-12-30 12:31:13
original
280 Les gens l'ont consulté

How Can I Efficiently Group an Array of Objects in JavaScript Using a Vanilla Approach?

Méthode GroupBy efficace pour les tableaux d'objets

Le regroupement d'objets en fonction de propriétés communes est une tâche courante dans le traitement des données. Cet extrait fournit une solution efficace pour regrouper des objets dans un tableau à l'aide d'une approche JavaScript vanille.

Pourquoi éviter Underscore.js ?

Bien que Underscore.js propose une fonction groupBy, son implémentation peut ne pas être convient si vous avez besoin de résultats « fusionnés » plutôt que de groupes séparés.

Custom Vanilla JS GroupBy

Le script suivant définit une fonction groupBy qui opère sur un tableau d'objets :

var groupBy = function(xs, key) {
  return xs.reduce(function(rv, x) {
    (rv[x[key]] = rv[x[key]] || []).push(x);
    return rv;
  }, {});
};
Copier après la connexion

Exemple d'utilisation

Pour regrouper des objets par « Phase » :

const data = [
  { Phase: "Phase 1", Step: "Step 1", Task: "Task 1", Value: "5" },
  ...
];
const groupedByPhase = groupBy(data, 'Phase');
Copier après la connexion

groupedByPhase contiendra :

{
  "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" },
    ...
  ]
}
Copier après la connexion

Pour regrouper davantage par "Step":

const groupedByPhaseStep = _(groupedByPhase).values().map(phase => {
  return groupBy(phase, 'Step');
}).value();
Copier après la connexion

groupedByPhaseStep contiendra :

[
  {
    "Phase": "Phase 1",
    "Step": "Step 1",
    "Value": 15
  },
  ...
]
Copier après la connexion

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