我的代码不起作用。我需要将数组的值与输入的值进行比较,并返回纬度和经度值,以便在地图上绘制此点,但只会出现错误:无法读取未定义的属性纬度。
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)工作。谢谢
答案 0 :(得分:1)
您的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
函数将不会尝试运行地图逻辑。
答案 1 :(得分:0)
尝试这样的事情:
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>