Get to know MDN better
Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.
Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Nota: En algunas versiones de ciertos navegadores, este método fue implementado como el método Array.prototype.group(). Debido a problemas de compatibilidad web, ahora es implementado como un método estático. Consulta la tabla de compatibilidad con navegadores para más detalles.
El método estático Object.groupBy() agrupa los elementos de un iterable según las cadenas que devuelve la función proporcionada. El objeto resultante incluye una propiedad distinta para cada grupo, y cada una contiene un arreglo con los elementos que pertenecen a ese grupo.
Este método se debe usar cuando los nombres de los grupos pueden representarse como cadenas de texto. Si se necesita agrupar elementos utilizando como clave un valor arbitrario, se debe usar Map.groupBy() en su lugar.
Un iterable (como un Array) cuyos elementos se agruparán.
callbackFnUna función que se ejecuta por cada elemento del iterable. Debe devolver un valor que pueda usarse como clave de propiedad (una cadena o un symbol) indicando el grupo del elemento actual. La función es llamada con los siguientes parámetros:
elementEl elemento actual que está siendo procesado.
indexEl índice del elemento actual que esta siendo procesado.
Un objeto de prototipo null que contiene propiedades para cada grupo. A cada propiedad se le asigna un arreglo con los elementos del grupo correspondiente.
Object.groupBy() llama a la función callbackFn una vez por cada elemento del iterable. Esta función debe devolver una cadena o un symbol (los valores de otros tipos son transformados en cadenas) que indique el grupo al que pertenece el elemento. Los valores devueltos por callbackFn se utilizan como claves del objeto retornado por Object.groupBy(). Para cada valor devuelto por la función, se crea una clave que agrupa en un arreglo a todos los elementos correspondientes.
Tanto los elementos del objeto devuelto como los del iterable original son los mismos (no son copias profundas). Cualquier cambio en la estructura interna de los elementos se reflejará tanto en el iterable original como en el objeto devuelto.
Primero definimos un arreglo que contiene objetos que representan un inventario de distintos alimentos. Cada comida tiene un type y un quantity.
El siguiente código agrupa los elementos según sea el valor de su propiedad type.
La función flecha simplemente devuelve la propiedad type de cada elemento del arreglo cada vez que es llamada. Nótese que el argumento de la función { type } es un ejemplo básico de la sintaxis de desestructuración de objetos para parámetros de función. Esto extrae la propiedad type del objeto que se pasa como parámetro y la asigna a una variable llamada type dentro del cuerpo de la función. Es una forma muy concisa de acceder a los valores relevantes de los elementos dentro de una función.
También podemos crear grupos a partir de valores inferidos de una o más propiedades de los elementos. A continuación se muestra un ejemplo muy similar, que clasifica los elementos en los grupos ok o restock, según el valor de la propiedad quantity.
| ECMAScript® 2027 Language Specification # sec-object.groupby |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 16 sept 2025 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.