Faltan datos en JSON de la llamada API, da error

Hago una llamada API al servidor para obtener datos

    const api_url = "https://my_urlxxx"

addMyData()
    .then(response => {
        //console.log('Working!');
    })
    .catch(error => console.log(error.message));
    
async function addMyData() {
    const response = await fetch(api_url);
    const data = await response.json();

Luego convierto el JSON en GeoJSON para Leaflet.js

geojson['type'] = 'FeatureCollection';
    geojson ['features'] = [];
    
    for (i = 0; i < data.length; i++) {
            x = data[i].location.coordinate.longitude;
            y = data[i].location.coordinate.latitude;
        console.log('get ', data[i].itemId); //find the error...
        console.log('get ', data[i].openingHours);
        console.log('get ', data[i].openingHours.services[0]);
        console.log('get ', data[i].openingHours.services[0].openDay); // error = undefined

        var newFeature = {
                "type": "Feature",
                "geometry": {
                    "type": "Point",
                    "coordinates": [x,y]
                },
                "properties": {
                    "status": data[i].status,
                    "itemId": data[i].itemId,
                    "name": data[i].name,
                    "openingMonday": days(data[i].openingHours.services[0].openDay) + ' ' + num2time(data[i].openingHours.services[0].openTime) + '\u2014' + num2time(data[i].openingHours.services[0].closeTime)
                  }
        }
        geojson ['features'].push(newFeature);
    }
    //console.log(JSON.stringify(geojson));
    loadData (geojson);
    };
    
    function loadData(MyGeoJSONData) {
    
    MyLayer = L.geoJson(MyGeoJSONData, {
    
    pointToLayer: function (feature, latlng) {
            if (feature.properties.status != "1") {
            return new L.shapeMarker(latlng, {
                radius: 4,
                color: '#252525', //#d53e4f
                fillOpacity: 0.3,
                weight: 2,
                shape: 'circle'
            })
            }
    },

El problema es que todos los artículos no tienen los valores de "openingHours". Esto hace que el error sea "indefinido" y no puedo recuperar datos para mostrar en el mapa del folleto. ¿Cómo puedo pasar o ignorar esos valores o quizás filtrarlos antes de crear el GeoJSON?

Esto es parte del archivo JSON de openingHours, toda esta parte puede faltar para algunos elementos en la lista JSON y no puedo pasar esto...

   "openingHours": {
  "services": [
    {
      "closeDay": "Monday",
      "closeTime": "2359",
      "openDay": "Monday",
      "openTime": "0000"
    },
    {
      "closeDay": "Tuesday",
      "closeTime": "2359",
      "openDay": "Tuesday",
      "openTime": "0000"
    },
    {
      "closeDay": "Wednesday",
      "closeTime": "2359",
      "openDay": "Wednesday",
      "openTime": "0000"
    },
    {
      "closeDay": "Thursday",
      "closeTime": "2359",
      "openDay": "Thursday",
      "openTime": "0000"
    },
    {
      "closeDay": "Friday",
      "closeTime": "2359",
      "openDay": "Friday",
      "openTime": "0000"
    },
    {
      "closeDay": "Saturday",
      "closeTime": "2359",
      "openDay": "Saturday",
      "openTime": "0000"
    },
    {
      "closeDay": "Sunday",
      "closeTime": "2359",
      "openDay": "Sunday",
      "openTime": "0000"
    }
  ],
  "specialDates": [
    
  ]
},
Answer

No necesita filtrar aquí, solo puede verificar con ternarios y devolver una cadena vacía (o lo que pueda necesitar), si no existe:

"openingMonday": data[i]?.openingHours?  days(data[i].openingHours.services[0].openDay) + ' ' + num2time(data[i].openingHours.services[0].openTime) + '\u2014' + num2time(data[i].openingHours.services[0].closeTime): ''