Javascript 如何修复无法读取属性';纬度';未定义的
我的代码不起作用。我需要将数组的值与输入的值进行比较,并返回纬度和经度值,以便在地图上绘制该点,但仅获取错误无法读取未定义的属性纬度Javascript 如何修复无法读取属性';纬度';未定义的,javascript,google-maps,Javascript,Google Maps,我的代码不起作用。我需要将数组的值与输入的值进行比较,并返回纬度和经度值,以便在地图上绘制该点,但仅获取错误无法读取未定义的属性纬度 var auto1 = [{"Latitude": 42.389, "Longitude": -8.567, title: "test"}]; var digit = document.getElementById('searchmap'); var ret = digit.value; function search(namek, myarray){
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);
}
var auto1=[{“纬度”:42.389,“经度”:-8.567,标题:“测试”}];
var digit=document.getElementById('searchmap');
var ret=数字值;
函数搜索(namek,myarray){
对于(var i=0;i您的search
函数有一个条件返回值。因此,如果数组参数中的任何项都不符合条件,它将返回未定义的值。在尝试引用函数返回值的属性之前,需要处理此情况
编辑:我很犹豫是否提供一个有效的示例,因为我不知道您的规范是什么,但这里有一个可行的示例:
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
的属性,因为没有任何属性。您不应该假设搜索
总是返回一些有效对象。Ifobj
的可能重复是false
,它将不具有.Latitude
和.Longitude
属性。这不是我真正的建议。我建议您在尝试使用它之前检查搜索
的返回值。返回false
将产生与您已经遇到的问题完全相同的问题。如果函数的返回值为no如果不是一个对象,那么你不应该试图将其视为一个对象。@user10381466什么是namek,myarray
你能显示更新的代码吗?谢谢@ShoeShineBoy。你是对的,ret变量有错误。我将var obj=search(ret,auto1)改为var obj=search(digit.value,auto1)。这对我来说很有用