Así que quiero iterar algunos usuarios, y cada uno de esos usuarios tiene un nombre de objeto vehicles
y quiero iterar los usuarios, y también iterar el valor de los vehículos dentro del objeto, pero el problema es que la segunda iteración que itera los vehículos a veces da un error porque un usuario puede tener usuarios nulos, y no los itera y detiene el ciclo dando un error, lo que quiero hacer es omitir la iteración en ese valor si es nulo.
Aquí está mi código:
const c = clients.clients.filter((c) => c.vehicles.map((v) => console.log(v._id)) );
Mensaje de error: Uncaught TypeError: Cannot read properties of null (reading 'map')
Eche un vistazo al operador de encadenamiento opcional ?.
En tu caso, el bucle se convertiría en
const c = clients.clients.filter(c => c.vehicles?.map(v => console.log(v._id)); );
Para dar una breve explicación del operador, cuando se usa en una propiedad que podría no estar presente (supongo que los vehicles
en su caso), en lugar de generar un error, cortocircuita la evaluación a undefined
, que es un valor falso, y por lo tanto es filtrado por .filter
.
prueba esto :
const c = clients.clients.filter((c) => { if(!c) return false; if(!c.vehicles) return false; return c.vehicles.map((v) => console.log(v._id)) } );