Método map
El método map permite aplicar una función
dada para cada elemento de un array. Este
método no modifica el array original, sino
que retorna un array modificado.
El método recibe como parámetro una función que
se ejecutará para cada elemento del array.
Lo que retorne esta función mediante return
para el elemento del array, se convertirá en el nuevo valor
de este elemento (ver ejemplos).
Se pueden pasar 3 parámetros a la función.
Si estos parámetros están presentes (no son obligatorios),
entonces en el primero irá automáticamente el elemento
del array, en el segundo irá su número en el array
(índice), y en el tercero - el array mismo.
Sintaxis
let nuevo_array = array.map(function(elemento, indice, array) {
código
return elemento_modificado;
});
Ejemplo
Creemos un array donde cada elemento sea el doble del elemento correspondiente del array inicial:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Resultado de ejecutar el código:
[2, 4, 6, 8, 10]
Ejemplo
Creemos un array donde cada elemento se obtenga así - el valor del elemento se multiplica por su número de orden en el array:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Resultado de ejecutar el código:
[0, 2, 6, 12, 20]
Ejemplo
Si es necesario, se puede pasar el array mismo en el tercer parámetro:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
// aquí estará disponible el array arr
});
Ejemplo
El método map también se puede usar para
recorrer arrays multidimensionales. Supongamos, por ejemplo,
que tenemos el siguiente array:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Recorramos este array con
map y mostremos sus elementos en la consola:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
Como resultado, console.log mostrará [1,
2, 3], luego [4, 5, 6], y luego
[7, 8, 9].
Como puedes ver, en la variable elem van
los subarrays. Apliquemos ahora el método
map a cada subarray y elevemos
cada uno de sus elementos al cuadrado:
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);