Introdução
No JavaScript, o tipo de dados array consiste em uma lista de elementos. Existem muitos métodos embutidos úteis disponíveis para desenvolvedores JavaScript trabalharem com arrays. Métodos que modificam o array original são conhecidos como métodos mutadores, e métodos que retornam um novo valor ou representação são conhecidos como métodos acessores.
Há uma terceira classe de métodos de array, conhecidos como métodos de iteração, que são métodos que operam em cada item de um array, um de cada vez. Esses métodos estão intimamente associados aos loops. Neste tutorial, estaremos focando nos métodos de iteração.
Para obter o máximo deste tutorial, você deve ter alguma familiaridade com a criação, indexação, modificação e iteração através de arrays, o que você pode revisar no tutorial Entendendo Arrays em JavaScript.
Neste tutorial, vamos usar métodos de iteração para percorrer arrays, realizar funções em cada item de um array, filtrar os resultados desejados de um array, reduzir os itens do array para um único valor e pesquisar arrays para encontrar valores ou índices.
Nota: Os métodos de array são corretamente escritos como Array.prototype.method()
, já que Array.prototype
refere-se ao próprio objeto Array
. Para simplicidade, listaremos apenas o nome como method()
.
Compreendendo Funções de Setas
Muitos exemplos ao longo deste tutorial estarão usando expressões de função de seta JavaScript, que são representadas por um sinal de igual seguido por um sinal de maior que: =>
.
A function is a block of reusable code that can be executed. Traditionally, a function can be written with the following syntax:
A versão mais recente do JavaScript no momento da escrita permite o uso de funções de seta, que podem ser escritas com a seguinte sintaxe:
Os parênteses em ambos os casos podem conter parâmetros. Quando há apenas um parâmetro, os parênteses podem ser omitidos, como segue:
Ao longo dos exemplos neste tutorial, usaremos a sintaxe da função de seta. Para ler e entender mais sobre funções em JavaScript, leia a referência de funções na Rede de Desenvolvedores Mozilla.
forEach()
O método forEach()
chama uma função para cada elemento em uma matriz.
Vamos começar com a seguinte matriz atribuída à variável fish
:
Podemos usar forEach()
para imprimir cada item na matriz fish
no console.
Uma vez feito isso, receberemos a seguinte saída:
Outputpiranha
barracuda
cod
eel
Outra maneira de fazer isso é usando a palavra-chave for
loop e testando-a contra a propriedade de comprimento da matriz.
O código acima terá a mesma saída que usar o método forEach()
. Como um método de iteração especificamente destinado ao uso com matrizes, forEach()
é mais conciso e direto para esta tarefa específica.
map()
O método map()
cria um novo array com os resultados de uma chamada de função em cada elemento do array.
Para um exemplo de como usar o método de iteração map()
, podemos imprimir cada iteração de um loop no console. O map()
não altera o array original; em vez disso, ele retorna um novo valor de array.
Outputpiranha
barracuda
cod
eel
Também podemos usar o map()
para alterar os valores de cada item em um array. Para demonstrar isso, vamos adicionar um s
ao final de cada item no array fish
para pluralizar cada palavra.
Output[ 'piranhas', 'barracudas', 'cods', 'eels' ]
A variável original fish
não é alterada, mas pluralFish
agora contém uma versão modificada da variável original.
filter()
O método filter()
cria um novo array com os elementos que passam no resultado de um teste dado.
Podemos usar filter()
para retornar um novo array contendo apenas os itens em uma lista que começam com uma letra específica. Para fazer isso, podemos utilizar a indexação de strings para chamar o primeiro item (ou letra) em cada item de string do array.
Output[ 'shark', 'squid', 'starfish' ]
Nós testamos quais itens no array têm um s
no índice 0
, e atribuímos o resultado a uma nova variável.
filter()
é um método de iteração e não altera o array original.
reduce()
O método reduce()
reduzirá um array a um único valor.
Isso é comumente visto com números, como encontrar a soma de todos os números em um array.
Output108
reduce()
também pode ser usado com strings e outros tipos de dados. O valor retornado por reduce()
pode ser um número, string, array ou outro tipo de dado. reduce()
é um método de iteração que não altera o array original.
O método find()
retorna o primeiro valor em uma matriz que passa em um teste dado.
O método find()
pode ajudá-lo a trabalhar com matrizes que contêm muitos valores.
Como exemplo, vamos criar uma matriz de criaturas marinhas.
Em seguida, usaremos o método find()
para testar se alguma das criaturas na matriz são cefalópodes.
Outputoctopus
Uma vez que octopus
foi a primeira entrada na matriz a satisfazer o teste na função isCephalopod()
, é o primeiro valor a ser retornado.
O método find()
pode ajudá-lo a trabalhar com matrizes que contêm muitos valores.
O método findIndex()
retorna o primeiro índice em uma matriz que passa em um teste dado.
Nós podemos usar o mesmo exemplo seaCreatures
do método find()
.
Usando o teste isCephalopod
, encontraremos o número do índice em vez do valor da primeira correspondência.
Output1
octopus
é o primeiro item a corresponder ao teste e tem um índice de 1
, portanto é o número do índice que é retornado.
Se o teste não for satisfeito, findIndex()
irá retornar -1
.
Output-1
O método findIndex()
é particularmente útil ao trabalhar com arrays contendo muitos itens.
Conclusão
Neste tutorial, revisamos os principais métodos de iteração de arrays embutidos em JavaScript. Os métodos de iteração operam em cada item de um array e frequentemente executam uma nova função. Passamos por como percorrer arrays, alterar o valor de cada item em um array, filtrar e reduzir arrays, e encontrar valores e índices.
Para revisar o básico de arrays, leia Entendendo Arrays em JavaScript. Para mais informações sobre sintaxe em JavaScript, consulte nosso tutorial sobre “Compreendendo Sintaxe e Estrutura de Código em JavaScript”.