Mapas do universo GNU/Linux — Fonte na imagem

#NE — JS — Programação Funcional — Higher-order Functions — Map()

map() transforma o array recebido aplicando as regras da função de callback em todos os elementos

Esta Nota de Estudo considera a função map() do JS, para definições de callback, higher-order functions efilter() veja a Nota de Estudo abaixo:

A Função Map()

Diferente do filter() que possibilita filtrar os elementos que passam pelas regras do callback, a função map() permite realizar computação com cada elemento do array passado por parâmetro usando as regras do callback.

Seu retorno é um novo array com os elementos alterados.

Segundo MDN, o método map() não altera o array original, mas a função de callback pode, então: cuidado.

Se um elemento for acrescentado ao array original após a chamada ao map() , ele não será visível para o callback, logo que a lista de elementos que serão processados pelo map() é gerada antes da primeira invocação da callback.

Segundo MDN, a função callback é chamada apenas para os elementos do array original que tiverem valores atribuídos; os elementos que estiverem como undefined, que tiverem sido removidos ou os que nunca tiveram valores atribuídos não serão considerados.

Exemplo de uso da higher-order function map()

Code 1 — Usando map() para gerar um novo array com nomes de cachorros em um array de animais

É possível observar em Code 1 que além de filtrar e mapear o atributo do retorno, é possível alterar elementos que serão adicionados ao novo array names.

MDN considera estas funções como “métodos”. Pessoalmente considero filter() e map() como “funções”, logo que retornam valores, além de que dependendo da função callback, até o array original pode ser alterado — se tiverem outra opinião sobre, favor deixar nos comentários, serei grato.


Referências

FunFunFunction — Playlist Functional Programming in JavaScript

EloquentJavaScript — Cap-4 — Higher-order Functions

DPW — map(), filter() e reduce() em JavaScript

Links

http://es6-features.org/

Map — MDN

Observação: Este artigo é apenas uma Nota de Estudo pessoal e não considera alto nível de detalhamento.