Así que estoy iterando una matriz con objetos y buscando una identificación específica, y esto funciona bien cuando tiene una identificación, pero en algún momento es nulo y cuando lo es arroja un error que no puede leer las propiedades de nulo o algo similar. .
Aquí está mi función, y me gustaría verificar el caso, si es nulo, simplemente omita y no itere ese objeto para poder evitar ese error:
Aquí está la función:
const d = vehicles.vehicles.filter((vehicle) => vehicle.owner._id === quick.temp.customer._id);Puede agregar una verificación simple si la variable es un objeto:
const d = vehicles.vehicles.filter((vehicle) => vehicle && vehicle.owner && vehicle.owner._id === quick.temp.customer._id); Esto podría fallar si el vehicle.owner es algo no nulo y no es un objeto, pero puede expandirlo aún más para verificar el tipo de vehicle.owner instanceof Object
Con ES6 puede usar el encadenamiento opcional : ?
const d = vehicles.vehicles.filter((vehicle) => vehicle?.owner?._id === quick.temp.customer._id);Aunque es un poco más lento.
Y, por último, puede envolver la condición en try{}catch(e){} de lo que no tiene que preocuparse por los errores:
const d = vehicles.vehicles.filter((vehicle) => { try { return vehicle.owner._id === quick.temp.customer._id } catch(er){} });Este método es el más lento de todos https://jsbench.me/zzl1871t5u/1