Il metodo map
Il metodo map permette di applicare una funzione data
per ogni elemento di un array. Inoltre,
il metodo non modifica l'array originale, ma
restituisce un array modificato.
Il metodo riceve come parametro una funzione, che
verrà eseguita per ogni elemento dell'array.
Ciò che questa funzione restituisce tramite return
per l'elemento dell'array, diventerà il nuovo valore
di quell'elemento (vedi esempi).
Alla funzione si possono passare 3 parametri.
Se questi parametri sono presenti (non sono obbligatori),
allora nel primo verrà inserito automaticamente l'elemento
dell'array, nel secondo verrà inserito il suo numero nell'array
(indice), e nel terzo - l'array stesso.
Sintassi
let nuovo_array = array.map(function(elemento, indice, array) {
codice
return elemento_modificato;
});
Esempio
Creiamo un array, ogni elemento del quale è il doppio del corrispondente elemento dell'array iniziale:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Risultato dell'esecuzione del codice:
[2, 4, 6, 8, 10]
Esempio
Creiamo un array, ogni elemento del quale si ottiene così - il valore dell'elemento viene moltiplicato per il suo numero d'ordine nell'array:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Risultato dell'esecuzione del codice:
[0, 2, 6, 12, 20]
Esempio
Se necessario, nel terzo parametro si può passare l'array stesso:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
// qui sarà disponibile l'array arr
});
Esempio
Il metodo map può essere utilizzato anche per
scorrere array multidimensionali. Supponiamo, ad esempio,
di avere questo array:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Scorriamo questo array con
map e stampiamo i suoi elementi in console:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
Di conseguenza console.log stamperà [1,
2, 3], poi [4, 5, 6], poi
[7, 8, 9].
Come vedi, nella variabile elem finiscono
i sotto-array. Applichiamo ora il metodo
map a ogni sotto-array ed eleviamo
al quadrato ogni suo elemento:
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);