Me preguntaba si alguien conoce un método que me permita insertar una propiedad de datos en una matriz si se cumple una condición. Por ejemplo, el código que estoy usando obtiene datos de una API. Los datos que busco en concreto son las fotos. Aquí está mi código:
for (const key in petData.animals) { loadedData.push({ id: key, photo: petData.animals[key].photos[0], name: petData.animals[key].name, description: petData.animals[key].description, }); }Mi problema se debe al hecho de que algunas de las entradas de datos carecen de fotos. Entonces, cada vez que ejecuto la aplicación, aparece un error que dice que las fotos no están definidas. ¿Es posible agregar una condición (y si es así, cómo?) similar a if photo === undefined => use una imagen predeterminada o if the photo === true => use la foto de la API?
La forma de hacer esto antes de los últimos años era verificar de forma incremental, así:
for (const key in petData.animals) { let photo = defaultPhoto; if (petData.animals[key].photos && petData.animals[key].photos[0]) { photo = petData.animals[key].photos[0]; } loadedData.push({ id: key, photo: photo, name: petData.animals[key].name, description: petData.animals[key].description, }); } Sin embargo, ahora tenemos el operador de encadenamiento opcional ( ?. ) y el operador de fusión nula ( ?? ) para que podamos hacer esto de manera más concisa, así:
for (const key in petData.animals) { loadedData.push({ id: key, photo: petData.animals[key]?.photos?.[0] ?? defaultPhoto, name: petData.animals[key].name, description: petData.animals[key].description, }); }