Neste artigo você vai aprender a como agrupar array por chave em JavaScript, vamos utilizar recursos base da linguagem!

agrupar array por chave em JavaScript capa

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!

Subscribe
Notify of
guest

0 Comentários
Inline Feedbacks
View all comments