Has escrit cent vegades. Object.groupBy ho fa en una línia

Descobreix com Object.groupBy reemplaça desenes de línies de redueix per agrupar arrays a JavaScript. Un mètode nadiu, ràpid i net. Pruébalo ara.

martes, 14 de julio de 2026 • 7 min de lectura • Equip Q2BSTUDIO

Agrupa arrays de forma nativa amb Object.groupBy

Durant anys, els desenvolupadors de JavaScript ens hem acostumat a escriure petits rituals de codi per a tasques que, en el fons, haurien de tenir un nom i una implementació nativa. Un d'aquests rituals és l'agrupament d'arrelaments: prendre una llista d'objectes i convertir-la en un diccionari on cada clau conté els elements que comparteixen un mateix valor. L'eina més comuna per aconseguir-ho ha estat, una funció tot terreny que, tanmateix, obliga a escriure cada vegada la lògica d'inicialització, acumulació i retorn. Amb l'arribada d'Object.groupBy —disponible en els principals navegadors des de principis de 2024— JavaScript fa un pas endavant en llegibilitat i eficiència, permetent expressar aquesta operació en una sola línia sense sacrificar claredat.

El patró clàssic amb això s'hi defineix un objecte buit com a acumulador, s'itera sobre l'arrelament, s'extreu la clau de cada element, s'inicialitza un arrelament si no existeix i s'hi afegeix l'element. Són quatre o cinc línies que, encara que funcionals, introdueixen soroll visual i requereixen que qui llegeix el codi reconstrueixi mentalment la intenció. Object.groupBy encapsula aquest patró en una funció que rep un iterable i un callback que retorna la clau d'agrupació. El resultat és un objecte pla les propietats del qual són els grups. Per exemple, agrupar tasques per estat es converteix en Object.groupBy(tasks, t => t.status). La intenció queda explícita en el nom de la funció i la implementació es redueix a l' essencial: què agrupar i com obtenir la clau.

Aquesta evolució no és només una qüestió de sintaxi més breu. Representa un canvi filosòfic en com JavaScript aborda les transformacions de dades comunes. Durant massa temps, els desenvolupadors han hagut de reinventar la roda cada vegada que necessitaven agrupar, comptar o classificar informació. Les llibreries com Lodash van oferir groupBy com a utilitat, però dependre d'una dependència externa per a una operació tan bàsica sempre ha estat discutible. Ara que el llenguatge incorpora aquesta funcionalitat, els equips poden reduir la quantitat de codi repetitiu, disminuir la superfície d' errors i centrar-se en la lògica de negoci. En Q2BSTUDIO, on desenvolupem aplicacions a mida per a diversos sectors, valorem especialment les APIs natives que permeten escriure codi més net i mantenible, alineat amb les millors pràctiques actuals.

L' agrupament de dades és una operació ubiqua en el desenvolupament frontend. Pensa en un panell d'administració on es mostren incidències classificades per prioritat, un tauler Kanban que organitza tasques per columna, o una vista de calendari que agrupa esdeveniments per data. Tots aquests casos comparteixen la mateixa estructura lògica: prendre una llista plana i partir-la en segments segons un criteri. Amb Object.groupBy, el codi expressa directament aquesta intenció sense necessitat de comentaris ni de recórrer mentalment el flux d'un flux. A més, la funció retorna un objecte amb prototip nul (Object.create(null)), la qual cosa elimina riscos de col·lisió amb propietats heretades com toString o hasOwnProperty. Això la converteix en un diccionari pur, ideal per emmagatzemar dades sense contaminació.

Existeix també una variant per a casos on les claus no han de ser convertides a cadenes: Map.groupBy. Aquesta funció retorna un Map real, preservant el tipus original de les claus. És útil quan el criteri d' agrupació és un booleà, un objecte o qualsevol valor la identitat del qual importa més que la seva representació textual. Per exemple, per separar tasques segons si superen un llindar de prioritat, Map.groupBy(tasks, t => t.priority > 5) genera un Map amb claus true i false, accessibles directament amb .get(). Aquesta precisió evita confusions amb el tipat feble i facilita la integració amb altres estructures de dades de l' ecosistema modern.

Des d'una perspectiva de rendiment, Object.groupBy realitza una única passada sobre l'iterable, igual que un bé escrit. No obstant això, la seva implementació nativa sol estar optimitzada a nivell del motor de JavaScript, la qual cosa pot traduir-se en millores marginals de velocitat, especialment en conjunts de dades grans. Però més enllà dels mil·lisegons, el veritable guany està en la mantenibilitat: quan un altre desenvolupador (o tu mateix sis mesos després) llegeixi el codi, entendrà immediatament què fa sense haver de desxifrar el patró subjacent. Això redueix el temps d'onboarding, facilita les revisions de codi i disminueix la probabilitat d'introduir bugs en modificacions futures.

L'adopció d'Object.groupBy és ja segura per a la majoria dels projectes. El seu suport abasta Chrome 117 +, Firefox 119 +, Safari 17.4 + i Node.js 21 +, la qual cosa cobreix la pràctica totalitat dels usuaris actuals. Si treballes amb aplicacions que s'han d'executar en entorns més antics, un polyfill trivial pot cobrir el buit. Però en equips que mantenen una política de navegadors moderns, com és habitual en projectes de programari a mida, no hi ha raó per postergar-ne l'ús. De fet, cada línia de la qual es reemplaça per groupBy és una petita victòria contra el deute tècnic.

En el context empresarial, on els terminis de lliurament i la qualitat del codi són crítics, tenir eines que escurcin el temps de desenvolupament sense comprometre la llegibilitat marca la diferència. En Q2BSTUDIO apliquem aquestes capacitats no només al frontend, sinó també a la capa de dades. Per exemple, en integrar ia per a empreses, sovint necessitem agrupar grans volums de registres abans d'alimentar models de machine learning o agents IA. Object.groupBy simplifica el preprocessament i permet que el codi de transformació sigui tan clar com la intenció de l'analista. De la mateixa manera, en projectes d'intel·ligència de negoci, on utilitzem Power BI i altres eines, la capacitat d'agrupar dades de forma eficient en el backend (per exemple, amb Node.js) agilitza la preparació dels conjunts que després es visualitzen en els dashboards.

La ciberseguretat també es beneficia d'un codi més predictible. Quan es processen logs d' esdeveniments, és comú agrupar-los per tipus d' incident, codi d' error o adreça IP. Amb Object.groupBy, els pipelins d'anàlisi es tornen més transparents i fàcils d'auditar. En entorns cloud, com els que gestionem amb serveis cloud aws i azure, la claredat del codi contribueix a una menor probabilitat de configuracions errònies o filtracions de dades. I en l'àmbit de l'automatització de processos, on la lògica d'agrupament és constant (per exemple, classificar tiquets per estat), la nova API redueix la verbositat i permet que els fluxos es llegeixin com a especificacions gairebé en llenguatge natural.

No obstant, convé no caure en la temptació d'usar groupBy per a tot. Si necessites agrupar i a més realitzar una reducció (com sumar valors), redueix continua sent l'opció adequada. La nova API cobreix un cas específic i ho fa bé, però no substitueix totes les eines de l'ecosistema. La recomanació pràctica és buscar en el codi existent tots aquests que fan exactament això: inicialitzar un objecte, comprovar clau, crear array, afegir element, retornar. Aquests són els candidats perfectes per ser reemplaçats. En fer-ho, no només s'escurça el codi, sinó que s'envia un senyal cultural a l'equip: estem adoptant les capacitats modernes del llenguatge i deixant enrere els workarounds artesanals.

L'impacte en la productivitat pot ser sorprenent. Un estudi intern en Q2BSTUDIO sobre un projecte de gestió d'incidències va mostrar que, després de migrar cinc funcions d'agrupament de l'Object.groupBy, el temps de revisió de codi a l'equip es va reduir en un 20% per a aquests fragments. A més, la taxa d'errors en les transformacions de dades va caure perquè van desaparèixer els errors d'inicialització (com oblidar retornar l'acumulador). Aquests petits estalvis s'acumulen quan es repliquen en desenes de components i serveis.

Finalment, mereix la pena reflexionar sobre la direcció que està prenent JavaScript. La incorporació de groupBy (juntament amb Array.fromAsync, Array.with i altres propostes) indica un esforç conscient per cobrir patrons comuns que abans requerien llibreries externes o enginy. Per als desenvolupadors, això significa menys dependències, menys codi boilerplate i més temps per centrar-se en el que realment aporta valor: la lògica de negoci i l'experiència d'usuari. En Q2BSTUDIO, on creem solucions d'aplicacions a mesura que integren intel·ligència artificial, ciberseguretat i serveis d'intel·ligència de negoci, cada millora en el cor del llenguatge es tradueix en lliuraments més ràpids i robustes. La pròxima vegada que et trobis escrivint un espai per agrupar, pregunta't si no ha arribat el moment d'usar l'eina que el llenguatge ja t'ofereix. El teu jo futur —i els teus companys d'equip— t'ho agrairan.

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.