Map: El método MAP se utiliza para mapear un array. ¿Mapear? Sí, con map, puedes recorrer cada posición de un array y crear un nuevo array, modificando lo que quieras del array original.

/*
 El método Map acepta hasta 3 parámetros:

const nuevoArray = arrayOriginal.map((valorActual, indice, arrayOriginal) => xxx )

  1) Map recorrerá todos los elementos del array, y el primer parámetro representa 
     cada elemento, uno por uno, del array que estamos mapeando. OBLIGATORIO.
  2) El índice es la posición actual que estamos mapeando. OPCIONAL.
  3) Una copia del array original. OPCIONAL.
*/

const numbers = [1, 2, 3, 4];
const double = numbers.map((num) => num * 2);

// double quedó así... [2, 4, 6, 8];
// numbers sigue siendo... [1, 2, 3, 4];

Reduce**:** El método REDUCE se usa para reducir un array a un solo valor. ¿Cómo es eso? Recorre cada elemento del array y, al final, solo queda un valor.

/*
 El método Reduce acepta hasta 4 parámetros:

const nuevoArray = arrayOriginal.reduce(
  (acumulador, valorActual, índice, arrayOriginal) => {
      return xxxxx
}, valorInicial);

  1) El acumulador, en la primera iteración, tendrá el valor inicial que le asignamos. 
     En las siguientes iteraciones, almacenará el valor acumulado. OBLIGATORIO.
  2) El valor del elemento actual que está siendo iterado. OBLIGATORIO.
  3) El índice del elemento actual. OPCIONAL.
  4) El array original. OPCIONAL.
*/

const numbers = [1, 2, 3, 4, 5];
const total = numbers.reduce((acumulador, actual) => {
    return acumulador + actual;
}, 0); // Observa este 0. Es el valor inicial que recibe el acumulador.

/*
¿Qué pasó aquí?  
Definimos un valor inicial para el acumulador, así que comenzó a sumar número por número dentro del array.

En la primera iteración:

 acumulador = acumulador(0) + actual(1) -> Ahora el acumulador vale 1

En la segunda iteración, el acumulador ahora vale 1.
	 
 acumulador = acumulador(1) + actual(2) -> Ahora el acumulador vale 3
*/

// total es igual a 15;
// numbers sigue siendo... [1, 2, 3, 4, 5];

Filter**:** El método FILTER se usa para filtrar un array. Recorre todos los valores del array y tú decides qué valores irán al nuevo array y cuáles serán descartados.

/*
 const nuevoArray = arrayOriginal.filter((valorActual, indice, arrayOriginal) => {
     tu código aquí
});

  1) El método filter recorre todos los elementos del array, y el primer parámetro 
     representa cada elemento, uno por uno, del array que estamos filtrando. OBLIGATORIO.
  2) El índice es la posición actual que estamos filtrando. OPCIONAL.
  3) Una copia del array original. OPCIONAL.

  Para cada elemento, hacemos una 'pregunta' en el código. Si la respuesta es verdadera 
  para ese elemento, se guardará en el nuevo array. Si es falsa, el valor será descartado.
*/

const numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const pares = numeros.filter(valorActual => valorActual % 2 === 0);

// pares quedó así... [2, 4, 6, 8, 10];
// numbers sigue siendo... [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];