Método map
O método map permite aplicar uma função
determinada para cada elemento de um array. No
entanto, o método não altera o array original, mas
retorna um array modificado.
O método recebe como parâmetro uma função que
será executada para cada elemento do array.
O que essa função retornar através de return
para o elemento do array se tornará o novo valor
desse elemento (veja os exemplos).
É possível passar 3 parâmetros para a função.
Se esses parâmetros estiverem presentes (eles não são obrigatórios),
então o primeiro receberá automaticamente o elemento
do array, o segundo receberá seu número no array
(índice) e o terceiro - o próprio array.
Sintaxe
let novoArray = array.map(function(elemento, indice, array) {
código
return elementoModificado;
});
Exemplo
Vamos criar um array onde cada elemento é o dobro do elemento correspondente no array inicial:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Resultado da execução do código:
[2, 4, 6, 8, 10]
Exemplo
Vamos criar um array onde cada elemento é obtido da seguinte forma - o valor do elemento é multiplicado por sua posição ordinal no array:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Resultado da execução do código:
[0, 2, 6, 12, 20]
Exemplo
Se necessário, é possível passar o próprio array como terceiro parâmetro:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
// aqui o array arr estará disponível
});
Exemplo
O método map também pode ser usado para
percorrer arrays multidimensionais. Suponha, por exemplo,
que tenhamos o seguinte array:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Vamos percorrer este array usando
map e exibir seus elementos no console:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
Como resultado, console.log exibirá [1,
2, 3], depois [4, 5, 6], depois
[7, 8, 9].
Como você pode ver, a variável elem recebe
os subarrays. Vamos agora aplicar o método
map a cada subarray e elevar
cada um de seus elementos ao quadrado:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
return elem.map(function(num) {
return num * num;
});
});
console.log(result);