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étodo | Qué hace | Devuelve |
---|---|---|
.map() | Transforma cada elemento de un array | Nuevo array transformado |
..filter() | Filtra elementos según una condición | Array con elementos que cumplan la condición |
.some() | Verifica si al menos uno cumple una condición | true 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.