Object.groupBy()

Regroupe des éléments selon une clé renvoyée par une fonction.

Renvoie
Un objet sans prototype, avec un tableau d’éléments dans chaque groupe.
Modifie l’original
Non
Sur cette page

Exemple

#
JavaScript
const students = [
  { name: 'Léa', level: 'avancé' },
  { name: 'Lucas', level: 'débutant' },
  { name: 'Emma', level: 'avancé' }
]

const byLevel = Object.groupBy(students, (s) => s.level)
console.log(byLevel.avancé.map((s) => s.name))
console.log(Object.keys(byLevel))
Console
['Léa', 'Emma']
['avancé', 'débutant']

Définition et utilisation

#

La méthode Object.groupBy(items, callbackFn) parcourt les éléments et appelle, pour chacun, une fonction qui renvoie le nom de son groupe. Le résultat est un objet dans lequel chaque groupe est un tableau des éléments correspondants.

Elle remplace un schéma courant, mais moins lisible, basé sur reduce(). Regrouper des tâches par statut, des élèves par niveau ou des produits par catégorie ne prend plus qu’une seule ligne.

L’objet renvoyé n’a pas de prototype, donc il n’a pas de méthodes comme hasOwnProperty. Si les clés de groupe ne sont pas des chaînes (par exemple des objets), utilisez Map.groupBy().

Syntaxe

#
Syntaxe
Object.groupBy(items, callbackFn)

Paramètres

#
  • items

    objet itérable

    Les éléments à regrouper, par exemple un tableau.
  • callbackFn

    function (element, index)

    La fonction qui renvoie le nom du groupe pour un élément.

Compatibilité des navigateurs

#

Nouveau dans les navigateurs · depuis 2024

Fonctionne dans les versions actuelles de tous les grands navigateurs. Les anciennes versions peuvent ne pas le prendre en charge.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Avec des navigateurs plus anciens, vous obtiendrez le même résultat avec reduce() ou un petit polyfill.
  • Pour regrouper par objets ou par nombres sans les convertir en texte, utilisez Map.groupBy().

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.