O Poder dos Métodos Auxiliares de Array usando ES6

Jéssica Neves Machado
gb.tech
Published in
4 min readDec 7, 2021

Quem trabalha com Javascript sabe que realizar operações com arrays de objetos é uma atividade essencial no mundo da programação, e com ES6 isso se tornou mais fácil, pois nos permite escrever códigos mais legíveis e fáceis de dar manutenção.

ECMAScript

Antes de entrar no tema principal é importante entender o que é ECMAScript (ES) e qual a sua relação com o Javascript. De forma resumida ES é uma especificação de linguagem de scripts padronizada pela ECMA-262 na qual o Javascript implementa, para mais informações acesse aqui.

Métodos Auxiliares

Existe uma infinidade de métodos auxiliares para array, porém neste post iremos ver os mais utilizados:

  • ForEach
  • Map
  • Filter
  • Find
  • Every
  • Some
  • Reduce

Os métodos auxiliares funcionam de forma muito semelhante, porém cada um tem um propósito diferente. Além disso esses métodos substituem a forma clássica de interação, onde muitas vezes usávamos um laço de repetição for acompanhado de um pouco de lógica de programação para obter um resultado de operações básicas no dia a dia, como por exemplo uma soma.

Durante os exemplos, irei compartilhar as implementações de como fazíamos sem o ES6 e como podemos melhorar esse código usando ES6.

Chega de papo e vamos lá …

ForEach

Este método auxiliar funciona muito bem quando precisamos percorrer todos os elementos de um objeto.
Exemplo: Imagine que precisamos mostrar os Shampoo favoritos de um usuário, esta implementação pode ser feita das seguintes formas:

Perceba que invocando a função foreach no array passamos como parâmetro uma função callback que recebe uma variável. Quem cuida do laço a ser executado é o próprio foreach e, para cada interação do array a função de callback é acionada. Com o foreach conseguimos o mesmo resultado em uma linha de código.

Map

O Método Map é muito útil quando precisamos percorrer um array e modificá-los.

Exemplo: Imagine que precisamos mostrar uma lista de produtos com desconto aplicado, esta implementação pode ser feita das seguintes formas:

Invocando a função Map temos menos linhas de código, isso pois com o map não precisamos controlar a posição do objeto a ser acessado, além disso a função retorna um novo array de objetos, mantendo a integridade do array original.

Filter

Esse método é muito utilizado quando queremos filtrar a nossa lista de acordo com um critério.

Exemplo: Imagine que precisamos mostrar somente os produtos a partir de 40 reais, esta implementação pode ser feita das seguintes formas:

Dentro da função filter usamos uma condição booleana (linha 22), para verificar o critério, caso a condição seja verdadeira, o item é add no array de retorno. Porém se nenhuma condição for verdadeira o retorno será um array vazio.

Find

O Método Find é muito semelhante ao Filter, porém ele retorna sempre o primeiro item encontrado conforme o critério informado.

Exemplo: Imagine que precisamos mostrar o produto " kit Eume Hidratação", esta implementação pode ser feita das seguintes formas:

Dentro da função find usamos uma condição booleana (linha 21) para verificar se o elemento corresponde ao critério, caso a condição seja verdadeira o valor é retornado e função finalizada. Porém se nenhuma condição for verdadeiro o retorno será undefined.

Every

Diferente das funções que temos visto, a função every retorna um valor booleano e não um array. Esta função verifica se todos os elementos do array possuem o critério informado.

Exemplo: Imagine que precisamos verificar se todos os produtos de uma lista possuem frete grátis, esta implementação pode ser feita das seguintes formas:

Dentro da função every usamos uma condição booleana (linha 20) para verificar se todos os produtos possuem frete grátis, caso 1 produto não possua frete grátis, o retorno sera false.

Neste exemplo o retorno é false, pois não são todos os produtos que possuem frete grátis, porém se todos os produtos tivessem frete grátis o retorno seria true.

Some

Some é parecido com o Every, porém a função irá retorna true, caso exista pelo menos um item no array com condição verdadeira.

Exemplo: Imagine que precisamos verificar se existe pelo menos um produto com frete grátis, esta implementação pode ser feita das seguintes formas:

Neste exemplo o retorno será true, pois existe pelos menos um produto com frete grátis.

Reduce

O Objetivo do Reduce é percorrer por cada elemento de uma lista com o objetivo de ao final gerar um único valor. Um bom caso de uso para entendermos o comportamento dele é realizar a soma de um array.

Exemplo: Imagine que precisamos mostrar o valor total de uma lista de produtos, esta implementação pode ser feita das seguintes formas:

A função Reduce neste contexto recebe dois parâmetros: callback e initial value que é 0 (linha 17).

A função de Callback possui os seguintes parâmetros:

  • totalValue: Essa variável irá conter o valor retornado na função de callback, que no nosso caso é a soma dos produtos, ou seja a cada interação será realizado a soma do produto com base nas linhas percorridas no array , essa soma será atribuída a variável total value.
    Na primeira interação do array seu valor será 0, pois definimos isso na linha 17.
  • product: receberá o item do array, conforme a posição do laço.

A saída final será de 165.29 que é a soma total dos produtos.

Um ponto importante a entender sobre os métodos auxiliares, é que caso seja adicionado um novo item ao array ou até mesmo alterado uma informação durante a execução dos métodos auxiliares, essa alteração será refletida no array, porém não sera processada pelo métodos auxiliar.

Exemplo:

Conclusão

Com a inserção dos métodos auxiliares, ficou muito mais fácil e prático trabalhar com arrays, além de reduzir o numero de linhas de código é também uma forma de escrever códigos mais legíveis.

Ficou com dúvida? comenta aqui, vou adorar responder você :)

Até a próxima ✌️

Meus contatos

--

--

Jéssica Neves Machado
gb.tech
Writer for

Fullstack Developer 👩🏻‍💻 Brazilian 🇧🇷 who loves 🌎 travel, fitness, trail, ride bike 🚴🏻‍♀️ and my family.