繁体   English   中英

如何修复无法读取未定义的属性“纬度”

[英]How to fix Cannot read property 'Latitude' of undefined

我的代码不起作用。 我需要将数组的值与输入的值进行比较并返回纬度和经度值,以便 plot 在 map 上的这一点,但只会得到错误无法读取未定义的属性纬度。

var auto1 = [{"Latitude": 42.389, "Longitude": -8.567, title: "test"}];

var digit = document.getElementById('searchmap');
var ret = digit.value;

function search(namek, myarray){
   for(var i=0; i<myarray.length; i++){
      if(myarray[i].title === namek){
         return myarray[i];
       } else{ return false;
       }
    }
 }

var obj = search(ret,auto1);
function showauto(){
     var retu = new google.maps.LatLng(obj.Latitude,obj.Longitude);
     map.setCenter(retu);
 }

我想要 map.setCenter(retu) 工作。 谢谢

您的search function 具有条件返回值。 因此,如果数组参数中没有任何项与条件匹配,它将返回 undefined。 在尝试引用函数返回值的属性之前,您需要处理这种情况。

编辑:我不愿提供一个可行的示例,因为我不知道您的规格是什么,但这是一个可行的示例:

function showauto() {
  const obj = search(ret, auto1)
  if (obj) {
    var retu = new google.maps.LatLng(obj.Latitude,obj.Longitude)
    map.setCenter(retu)
  }
}

search返回虚假值的情况下, showauto function 将不会尝试运行映射逻辑。

尝试这样的事情:

function search(name, myarray) {
    const foundItem = myarray.find(element => {
        return element.title === name
    })
    return foundItem
}

另外我不太确定你在做什么,但也许你在那个 ret 变量中有错误

var ret = digit.value

您没有为 function 在线搜索提供正确的值: var obj = search(ret,auto1)所以您的搜索 function 找不到任何东西并且它没有返回任何值,并且obj变为undefined并且您无法访问undefined的属性,因为空无一人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM