Cómo trabajar con arrays de objetos en JavaScript con .map(), .filter() y .some()

🧪 ¿Qué versión de JavaScript introdujo estos métodos?

Los métodos .map(), .filter() y .some() fueron introducidos en la especificación ECMAScript 5 (ES5), en el año 2009. Desde entonces, son ampliamente soportados en todos los navegadores modernos.

Antes de ES5, era común usar estructuras como for o forEach para transformar arrays, lo que resultaba más verboso. Por ejemplo:

let nombres = [];
  for (let i = 0; i < centros.length; i++) {
    nombres.push(centros[i].nombre);
  }

Con .map() podemos reescribirlo de forma más elegante:

let nombres = centros.map(c => c.nombre);

🛠️ ¿Qué hace cada uno?

MétodoQué haceDevuelve
.map()Transforma cada elemento de un arrayNuevo array transformado
..filter()Filtra elementos según una condiciónArray con elementos que cumplan la condición
.some()Verifica si al menos uno cumple una condicióntrue o false

💡 Ejemplos prácticos con un buscador de centros de belleza

Supongamos que estamos trabajando con una lista de centros como los de BeautyMap:

const centros = [
    {
      id: 1,
      nombre: "Glow Studio",
      servicios: ["facial", "depilación", "uñas"],
      precioMedio: 35,
      distanciaKm: 2.5,
      destacado: true
    },
    {
      id: 2,
      nombre: "Belleza Zen",
      servicios: ["masaje", "facial"],
      precioMedio: 50,
      distanciaKm: 5,
      destacado: false
    },
    {
      id: 3,
      nombre: "Lash & Brows",
      servicios: ["cejas", "pestañas"],
      precioMedio: 45,
      distanciaKm: 1.2,
      destacado: true
    }
  ];

.map() – Transformar

Ejemplo: Obtener nombres de centros cercanos (menos de 3 km).

const nombres = centros
  .filter(c => c.distanciaKm <= 3)
    .map(c => c.nombre);
    console.log(nombres); // ["Glow Studio", "Lash & Brows"]

.filter() – Filtrar

Ejemplo: Buscar centros con servicio "facial" y precio medio inferior a 40 €.

const resultados = centros.filter(c =>
  c.servicios.includes("facial") && c.precioMedio <= 40
    );
    console.log(resultados);
    // [{ id: 1, nombre: "Glow Studio", ... }]

.some() – Verificar existencia

Ejemplo: ¿Hay centros destacados para mostrar en portada?

const hayDestacados = centros.some(c => c.destacado);
    console.log(hayDestacados); // true

🧠 Bonus: función con filtros dinámicos

function filtrarCentros({ tipo, precioMax, maxKm }) {
    return centros.filter(c =>
      (!tipo || c.servicios.includes(tipo)) &&
      (!precioMax || c.precioMedio <= precioMax) &&
      (!maxKm || c.distanciaKm <= maxKm)
    );
  }

  const resultados = filtrarCentros({ tipo: "facial", precioMax: 40 });
  console.log(resultados);
  // [{ id: 1, nombre: "Glow Studio", ... }]

📚 Conclusión

  • Estos métodos llegaron con ES5 y hoy son fundamentales en JavaScript moderno.
  • Permiten escribir código más expresivo, legible y funcional.
  • En proyectos como BeautyMap, son la base para implementar filtros de búsqueda y transformaciones de datos.