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!