Cómo solucionar el error ‘x.map is not a function’ en JavaScript
Introducción
El error ‘map is not a function’ ocurre cuando intentas iterar con .map() sobre una variable que no es un Array. Es extremadamente común al consumir APIs REST que devuelven un objeto en lugar de una lista, o cuando los datos aún no han cargado. La solución consiste en validar el tipo de dato antes de procesarlo.
Solución Rápida (Código)
const items = data?.results || [];
// Opción 1: Array.isArray + Short-circuit
if (Array.isArray(items)) {
items.map(item => console.log(item));
}
// Opción 2: Valor por defecto en desestructuración
const { products = [] } = response;
products.map(p => p.name);
Explicación técnica
JavaScript es un lenguaje de tipado dinámico, lo que significa que una variable puede cambiar de Array a null o Object inesperadamente. El método .map() es exclusivo del prototipo de Array. Si la variable contiene undefined (común en llamadas asíncronas), el motor de JS lanzará una excepción que detendrá toda la lógica posterior.
Para evitarlo, utiliza Array.isArray(), que es la forma más fiable de verificar el tipo. Otra técnica moderna es el uso de Default Values durante la desestructuración de objetos, asegurando que si la propiedad no existe, se asigne un array vacío []. Esto permite que el .map() se ejecute sin errores, simplemente no devolviendo nada. Evitarás así pantallas en blanco en el frontend y mejorarás la resiliencia de tu código ante fallos en la capa de datos.
Conclusión La validación preventiva es una marca de código profesional. Te invitamos a explorar nuestra guía sobre manejo de estados asíncronos para aprender a gestionar estados de carga y error de forma elegante.