Neste artigo você vai aprender a como agrupar array por chave em JavaScript, vamos utilizar recursos base da linguagem!
Fala programador(a), beleza? Bora aprender mais sobre arrays em JavaScript!
Primeiramente é necessário entender o dado que temos e o que esperamos desta solução
Image um array desta maneira:
const users = [ { name: "Matheus", job: "Programador" }, { name: "João", job: "Engenheiro" }, { name: "Pedro", job: "Programador" } ];
Aqui temos um array de objetos, que tem chaves name e job
A ideia é agrupar as profissões semelhantes, ou seja, que o array seja agrupado pela chave job
Bom, agora vamos ao código:
function groupBy(array, key) { return array .reduce((hash, obj) => { if(obj[key] === undefined) return hash; return Object.assign(hash, { [obj[key]]:( hash[obj[key]] || [] ).concat(obj)}) }, {}) } const groupedArray = groupBy(users, "job") console.log(groupedArray) /* { Engenheiro: [{ job: "Engenheiro", name: "João" }], Programador: [{ job: "Programador", name: "Matheus" }, { job: "Programador", name: "Pedro" }] } */
Criamos uma função que aceita um array e uma chave, que será o fator de agrupamento
Com reduce estamos reduzindo a nova segmentação gerada baseada na chave que escolhemos
E também criamos a chave com o nome da profissão, para saber como estamos agrupando
Isso é feito com o Object.assign
Por fim, temos um objeto gerado com chaves com o nome da chave de referência que escolhemos, com cada um dos itens dentro de seus agrupamentos
Deixe um comentário contando o que achou desta solução 🙂
Quer aprender mais sobre JavaScript? Confira o vídeo abaixo:
Conclusão
Neste artigo você aprendeu a como agrupar array por chave em JavaScript
Utilizamos um famoso snippet, que cria um objeto agrupando o array base em uma chave específica
A função foi uma abordagem interessante, pois permite reaproveitamento do código
Deseja programar de forma profissional? Confira o nosso treinamento completo clicando aqui.
Uma plataforma de cursos com projetos completos, comunidade de alunos e muito mais!
Há também o nosso canal no YouTube, com muito conteúdo gratuito de qualidade!