Arrays: Map, Filter y Reduce
Arrow (=>)
Funciones Tradicionales | Operador arrow => |
nombre = function (argumentos) {
código;
}
|
nombre = ( argumentos ) => {
código; } |
→ Los paréntesis y las llaves son opcionales:
|
|
¿Y si hubiera un return dentro de la función?
¡¡¡ También es opcional !!!
|
|
function doble ( x ) { return x * 2 ; } |
x => x * 2;
|
let interval = setInterval ( function(){ alert("Hello"); }, 3000); | let interval = setInterval ( () => alert("Hello"); , 3000); |
nombre = (arg) => { console.log(arg) };
nombre = () => { console.log(“adios”)};
arg => console.log(arg);
Función Map
[1, 2, 3, 4].map( function (currentValue, index, array) { ... })
- Index → El índice de la posición del array que se está iterando.
- Array → Una copia del array completo.
[array].map(funcion)
Devuelve un array con la misma longitud que el que le hemos pasado:
let coches = [
{color: red, puertas: 3},
{color: blue, puertas: 6},
{color:yellow, puertas: 9}
];
let mapeo = coches.map( coches => coches.color); //ARRAY DE COLORES DE COCHES (string)
Ejemplos:
let numbers = [1, 2, 3, 4, 5, 6];
let numSqrt = numbers.map( function (number) {
let numSqrt = numbers.map( function (number) {
return number * number;
})
// Resultado: [1, 4, 9, 16, 25, 36]
})
// Resultado: [1, 4, 9, 16, 25, 36]
//---------------MISMO EJEMPLO PERO CON ARROW------------------
let numbers = [1, 2, 3, 4, 5, 6]
let numSqrt = numbers.map( number => number * number );
// Resultado: [1, 4, 9, 16, 25, 36]
let numSqrt = numbers.map( number => number * number );
// Resultado: [1, 4, 9, 16, 25, 36]
Función Filter
Es igual que map(), pero devuelve un array más pequeño (se ajusta a la cantidad de valores que se hayan obtenido despues del filtrado).
- CurrentValue → El valor actual en cada iteración.
- Index → El índice de la posición del array que se está iterando.
- Array → Una copia del array completo.
[array].filter(funcion)
Devuelve un array con distinta longitud:
let coches = [
{color: red, puertas: 3},
{color: blue, puertas: 6},
{color:yellow, puertas: 9}
];
let mapeo = coches.filter( coches => coches.color == “red”); //ARRAY DE COLORES ROJOS DE COCHES
(string)
Ejemplos:
let numbers = [1, 2, 3, 4, 5, 6];
let numFiltered = numbers.filter(function (number) {
return number > 3 ;
})
// Resultado: [4, 5, 6]
let numFiltered = numbers.filter(function (number) {
return number > 3 ;
})
// Resultado: [4, 5, 6]
//---------------MISMO EJEMPLO PERO CON ARROW------------------
let numbers = [1, 2, 3, 4, 5, 6] ;
let numFiltered = numbers.filter(number => number > 3) ;
// REsultado: [4, 5, 6]
let numFiltered = numbers.filter(number => number > 3) ;
// REsultado: [4, 5, 6]
Reduce() convierte o reduce una matriz o Array hasta un único valor por medio de la función pasada como callback.
- Acumulador → Se encarga de acumular valores.
- ValorActual → El valor actual en cada iteración.
- Índice → El índice de la posición del array que se está iterando.
- Array → Una copia del array completo.
- ValorInicialAcumulador → Es el valor inicial del acumulador.
[array].reduce(funcion)
Devuelve un array con la misma longitud que el que le hemos pasado:
let coches = [
{color: red, puertas: 3},
{color: blue, puertas: 6},
{color:yellow, puertas: 9}
];
let mapeo = coches.reduce( (a,b) => a+b, valorActualAcumulador); //Devuelve la suma de todos los
numeros empezando por 4
Encadenando Funciones
Vamos a realizar un ejemplo en el que calculemos la suma de los salarios de todos los trabajadores “móviles” del siguiente array:
El código sería el siguiente: