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

我的代码不起作用。我需要将数组的值与输入的值进行比较,并返回纬度和经度值,以便在地图上绘制此点,但只会出现错误:无法读取未定义的属性纬度。

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)工作。谢谢

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

您的search函数具有条件返回值。因此,如果array参数中的所有项目均不符合条件,则它将返回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 search(name,myarray) {
    const foundItem = myarray.find(element => {
        return element.title === name
    })
    return foundItem
}

我也不太确定您在做什么,但也许您在该ret变量中有错误

var ret = digit.value

您没有为在线函数搜索提供正确的值: var obj = search(ret,auto1)使得您的搜索功能无法找到任何内容,并且不返回任何值,并且obj变为undefined,并且您无法访问undefined的属性,因为没有属性。 / p>

本文链接:https://www.f2er.com/3148338.html

大家都在问