Método JavaScript Object.groupBy()

Resumo : neste tutorial, você aprenderá como usar o groupBy()método JavaScript para agrupar elementos de um iterável com base em valores retornados por uma função de retorno de chamada especificada.

Introdução à função JavaScript groupBy()

O Object.groupBy()é um método estático que permite agrupar elementos de um iterável com base nos valores retornados por uma função de retorno de chamada especificada.

Pode Object.groupBy()ser útil quando você deseja categorizar elementos em grupos distintos.

Aqui está a sintaxe do groupBy()método:

Object.groupBy(items, callbackFn);Linguagem de código:  JavaScript  ( javascript )

Nesta sintaxe:

  • items: Um iterável (por exemplo, um array) cujos elementos você deseja agrupar.
  • callbackFn: uma função a ser executada para cada elemento do iterável. Deve retornar um valor que pode ser convertido em uma chave de propriedade (string ou símbolo) indicando o grupo do elemento atual.

O Object.groupBy()método retorna um objeto de protótipo nulo com propriedades para todos os grupos, cada um atribuído a uma matriz contendo os elementos do grupo associado.

O Object.groupBy()método chama a callbackFnfunção para cada elemento do iterável.

A callbackFnfunção deve retornar uma string ou símbolo, que é usado como chave para o grupo ao qual o elemento atual pertence.

Os valores retornados por callbackFnservem como chaves para o objeto retornado por Object.groupBy(), e cada chave possui um array associado contendo todos os elementos que compartilham o mesmo grupo.

Função JavaScript groupBy()

Vamos explorar alguns exemplos de uso da Object.groupBy()função.

1) Usando o método Object.groupBy() para agrupar livros por gênero

O exemplo a seguir usa o groupBy()método para agrupar objetos de livro por gênero:

const books = [
  { title: 'The Catcher in the Rye', genre: 'Fiction' },
  { title: 'Sapiens', genre: 'Non-Fiction' },
  { title: 'Dune', genre: 'Science Fiction' },
  { title: 'To Kill a Mockingbird', genre: 'Fiction' },
];

const group = Object.groupBy(books, (book) => book.genre);

console.log(group);Linguagem de código:  JavaScript  ( javascript )

Saída:

[Object: null prototype] {
  Fiction: [
    { title: 'The Catcher in the Rye', genre: 'Fiction' },
    { title: 'To Kill a Mockingbird', genre: 'Fiction' }
  ],
  'Non-Fiction': [ { title: 'Sapiens', genre: 'Non-Fiction' } ],
  'Science Fiction': [ { title: 'Dune', genre: 'Science Fiction' } ]
}Linguagem de código:  JavaScript  ( javascript )

Neste exemplo, usamos a propriedade de gênero dos objetos book para agrupamento na função de retorno de chamada. O objeto de resultado tem três grupos: Fiction, Non-Fictione Science Fiction.

Para tornar o código mais conciso, você pode usar a desestruturação de objetos assim:

const group = Object.groupBy(books, ({genre}) => genre);Linguagem de código:  JavaScript  ( javascript )

Extrai {genre}a genrepropriedade do objeto book e a função de retorno de chamada a retorna como a chave do grupo.

2) Usando o método Object.groupBy() para agrupar números

O exemplo a seguir usa o groupBy()método para categorizar números em oddgrupos even:

const numbers = [1, 2, 6, 5, 4, 9];
const group = Object.groupBy(numbers, (n) => (n % 2 == 0 ? 'even' : 'odd'));
console.log(group);Linguagem de código:  JavaScript  ( javascript )

Saída:

[Object: null prototype] { odd: [ 1, 5, 9 ], even: [ 2, 6, 4 ] }Linguagem de código:  JavaScript  ( javascript )

Neste exemplo, definimos um callback que pega cada número ne verifica se é par ( n % 2 == 0).

Se for par, o retorno de chamada retornará a string 'even'; caso contrário, ele retorna 'odd'. O groupBy()método usa a string como chave para agrupamento.

Resumo

  • Usar o JavaScript Object.groupBy()é um método poderoso para agrupar elementos com base em critérios específicos retornados por um retorno de chamada especificado.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *