Tengo una lista global de montañas. Quiero filtrar todas las montañas francesas. Para hacer esto, necesito verificar si iso3166_1Alpha2
está configurado en FR. El problema es que no todas las montañas tienen un valor. El script muere después de que alcanza un valor nulo, creo porque este es el error:
Uncaught (in promise) TypeError: Cannot read properties of null (reading 'iso3166_1Alpha2')
Este es mi guión. Parece que mi verificación de !== null
no funciona y no sé por qué.
function addJSON() { let url = "https://development.example.com/admin/mtn/json/mtn_areas.geojson"; fetch(url) .then(function (response) { return response.json(); }) .then(function (data) { let mtn = data.features; for (var i = 0; i < mtn.length; i++) { if (mtn[i].properties.location.iso3166_1Alpha2 !== null) { x = mtn[i].properties.location.iso3166_1Alpha2; console.log(x); } } }); }
Parece que está obteniendo un artículo que no tiene una propiedad de location
, en cuyo caso su condición no ayudará a prevenirlo. Intente cambiar su función como se muestra a continuación. Observe que estoy usando encadenamiento opcional , el ?.
sintaxis, para evitar cualquier propiedad null
o undifined
.
function addJSON() { let url = "https://development.example.com/admin/mtn/json/mtn_areas.geojson"; fetch(url) .then(function (response) { return response.json(); }) .then(function (data) { let mtn = data.features; for (var i = 0; i < mtn.length; i++) { if (mtn[i]?.properties?.location?.iso3166_1Alpha2) { x = mtn[i].properties.location.iso3166_1Alpha2; console.log(x); } } }); }