Aprenda Lodash: _.groupBy, agrupe itens em um array ou objeto por um valor fornecido

Desafio: escreva sua própria versão de groupBy chamada myGroupBy usando JavaScript puro que faça a mesma coisa que a versão do lodash.

A função auxiliar do lodash, groupBy, recebe um array e agrupa seus itens em um objeto de acordo com um critério fornecido. Um exemplo da vida real seria ter um estacionamento cheio de carros e agrupá-los por cor. Depois, você colocaria os vermelhos em um lugar e os azuis em outro. O array representa o estacionamento, e o objeto representa as posições onde você colocou os carros.

Argumentos

  • collection (Array or Object): A coleção a ser percorrida.
  • [iteratee=_.identity] (Function or String or Object): A iteratee que transforma as chaves.

Retorna

  • (Object): Retorna o objeto agregado resultante.

Exemplos

groupBy(["one", "two", "three"], "length"); returns  { "3": ["one", "two"], "5": ["three"] }

Observações

Onde o lodash se destaca é em sua versatilidade. Essa função pode receber uma string, um objeto ou uma função e retornar um resultado. Isso dificulta escrever nossa versão em JavaScript puro, pois precisamos levar em conta tantos tipos diferentes de entrada.