Escolar Documentos
Profissional Documentos
Cultura Documentos
JavaScript
Saiba mais sobre map(), filter() e reduce() e como usar estas importantes funções
de programação funcional em JavaScript.
25/07/2016
Tárcio Zemel
Buscar por...
Assine nossa newsletter e receba indicações
sensacionais 1 vez por mês!
Eu quero!
Desvantagens do loop
Buscar por...
Digamos que se está trabalhando em uma correção de bug e, vagueando por
1000 linhas de código JavaScript, eis que o seguinte loop se apresenta:
Foi possível ver que o loop serve para criar um novo array com elementos não
duplicados no original. Mas, para descobrir isso, foi necessária uma análise em 5
etapas:
Código: var i = 0
Significado: Termina à direita
Código: i++
Significado: Incremento de 1 em 1
Significado: Se o valor é de primeira instância no array, vai coincidir com o índice (isso
significa que se está verificando uma duplicata)
Código: models.push(...)
Significado: models deve ser uma lista, mas quais dados ali constam? Quais são seus
tipos de dados? É preciso procurar um arquivo “models”. Enxaguar. Repetir.
Buscar por...
É necessário verificar 5 pedaços de informações para determinar o que está
acontecendo. E este é um único loop!
Simples e elegante.
Buscar por...
map()
Parâmetros:
Parâmetro: elem
Significado: Valor do elemento
Parâmetro: index
Parâmetro: array
Parâmetro: thisArg
filter()
Buscar por...
Use filter() quando: é preciso remover elementos indesejados com base em
alguma(s) condição(ões).
O que filter() faz: como map() , filter() percorre o array da esquerda para a
direita invocando uma função de retorno em cada elemento. O valor retornado
deve ser um booleano que indica se o elemento será mantido ou descartado.
Depois de todos os elementos terem sido analisados, filter() retorna um novo
array com todos os elementos que retornaram como verdadeiro.
Buscar por...
Parâmetros (os mesmo que map() ):
Parâmetro: elem
Significado: Valor do elemento
Parâmetro: index
Parâmetro: array
Parâmetro: thisArg
reduce()
Buscar por...
Use reduce() quando: é preciso encontrar um valor cumulativo ou concatenado
com base em elementos de todo o array.
1 var rockets = [
2 { country:'Russia', launches:32 },
3 { country:'US', launches:23 },
4 { country:'China', launches:16 },
5 { country:'Europe(ESA)', launches:7 },
6 { country:'India', launches:4 },
7 { country:'Japan', launches:3 }
8 ];
9
10 var sum = rockets.reduce( function( prevVal, elem ) {
11 return prevVal + elem.launches;
12 }, 0 );
13
14 // ES6
15 // rockets.reduce( ( prevVal, elem ) => prevVal + elem.launches, 0 );
16
17 sum // 85
Parâmetros:
Parâmetro: prevVal
Parâmetro: elem
Significado: Valor do elemento
Parâmetro: index
Parâmetro: array
Parâmetro: initialValue
Buscar por...
(mais à esquerda)
Conclusão sobre map() , filter() e
reduce() em JavaScript
Como informações extras sobre map() , filter() e reduce() , dá-se que:
Importante ressaltar, também, que map() , filter() e reduce() não vieram para
substituir loops que, definitivamente, ainda têm seu lugar em diversas situações
— como, por exemplo, ao se trabalhar com grandes arrays (mais de 1k elementos)
ou quando é preciso parar a iteração se determinada(s) condição(ões) for(em)
atendida(s) ( break ).
Buscar por...
Facebook do dpw
Instagram do dpw
YouTube do dpw
Twitter do dpw
desenvolvimento para web é mantido pela
webfatorial e usa a licença
WTFPL.