Gerenciar, classificar e manipular dados com o JavaScript é uma habilidade que frequentemente delegamos a bibliotecas de terceiros, como a lodash. Entretanto, à medida que a linguagem JavaScript progride, esses recursos acabam sendo adicionados à especificação JavaScript. Duas dessas APIs para agrupamento de Array
dados são `Array.prototype.group
e Array.prototype.groupToMap
.
Array.prototype.group
Para agrupar uma matriz de objetos por uma determinada propriedade, chame a função group
com a função que retorna a string de agrupamento:
const teams = [ { name: "Arsenal", origin: "London", tier: "legendary" }, { name: "Manchester United", origin: "Manchester", tier: "legendary" }, { name: "Liverpool", origin: "Liverpool", tier: "legendary" }, { name: "Newcastle United", origin: "Newcastle", tier: "mid" }, // Lol, awful club { name: "Tottenham", origin: "London", tier: "lol" }, ]; const tieredTeams = teams.group(({ tier }) => tier);
O resultado da função de agrupamento da matriz group
é um objeto com chaves que correspondem à chave de agrupamento:
{ legendary: [ {name: "Arsenal", origin: "London", tier: "legendary"}, {name: "Manchester United", origin: "Manchester", tier: "legendary"}, {name: "Liverpool", origin: "Liverpool", tier: "legendary"} ], mid: [ {name: "Newcastle United", origin: "Newcastle", tier: "mid"} ], lol: [ {name: "Tottenham", origin: "London", tier: "lol"} ] }
Array.prototype.groupToMap
groupToMap
retorna um Map
em vez de um literal de objeto:
const tieredTeamsMap = teams.group(({ tier }) => tier); tieredTeamsMap.has('lol') // true tieredTeamsMap.get('lol') // [{name: "Tottenham", origin: "London", tier: "lol"}]
Até o momento da publicação, group
e groupToMap
estão disponíveis apenas no Safari. Esses dois métodos são cruciais para o avanço do gerenciamento de dados. Quer o senhor esteja manipulando dados no cliente ou no servidor, esses métodos nativos recém-adicionados são muito bem-vindos.