Javascript 如何从数组中获取第一个匹配元素
我有一系列的记号笔Javascript 如何从数组中获取第一个匹配元素,javascript,Javascript,我有一系列的记号笔 var markers = [{ "longititude": "78.377670", "latitude": "17.439669", "name": "one" }, { "longititude": "78.377617", "latitude": "17.439692", "name": "two" }, { "longititude": "78.377644", "latitude": "17.439
var markers = [{
"longititude": "78.377670",
"latitude": "17.439669",
"name": "one"
}, {
"longititude": "78.377617",
"latitude": "17.439692",
"name": "two"
}, {
"longititude": "78.377644",
"latitude": "17.439674",
"name": "three"
}, {
"longititude": "78.377665",
"latitude": "17.439667",
"name": "four"
}]
我正在发送纬度和经度,并检查它是否在一定的距离范围内
作为对函数的响应,我希望得到总计数以及它所属的纬度和经度值
但我总是得到数组的最后一个元素
请告诉我如何解决此问题。您每次都在函数中替换纬度和经度值。因此,在循环结束时,
var纬度
和var经度
将始终具有数组中最后一个元素的值。如果if子句检测到正确的标记,则应保存i
的值,然后返回markers[i]。latitude
您的意思是:
函数获取值(标记、lat、lng){
变量结果={
计数:0,
值:[]
};
对于(var i=0;i
我不知道为什么要用第一个匹配的元素而不是最近的元素来响应,但这还是可以做到的:
function fetchValue(markers, lat, lng) {
var count = 0;
var firstMatchingLatitude = null;
var firstMatchingLongititude = null;
for (var i = 0; i < markers.length; i++) {
var latitude = markers[i].latitude;
var longitude = markers[i].longititude;
if (lat == latitude && lng == longitude) {
if(firstMatchingLatitude == null){
firstMatchingLatitude = latitude;
firstMatchingLongititude = longitude;
}
count++;
}
else if (Math.sqrt(Math.pow((lat - latitude), 2) + Math.pow((lng - longitude), 2)) < 0.000005) {
if(firstMatchingLatitude == null){
firstMatchingLatitude = latitude;
firstMatchingLongititude = longitude;
}
count++;
}
}
var result = {
count: count,
latitude: firstMatchingLatitude,
longitude: firstMatchingLongititude
};
return result;
}
函数获取值(标记、lat、lng){
var计数=0;
var firstMatchingLatitude=null;
var firstMatchingLongititude=null;
对于(var i=0;i
诀窍是在for循环的每次重复中设置纬度和经度。哦,是“纬度”而不是“纬度”;)
祝你好运 var标记=[
var markers = [
{
"longititude": "78.377665",
"latitude": "17.439669",
"name": "one"
},
{
"longititude": "78.377617",
"latitude": "17.439692",
"name": "two"
},
{
"longititude": "78.377644",
"latitude": "17.439674",
"name": "three"
},
{
"longititude": "78.377665",
"latitude": "17.439667",
"name": "four"
}
]
function fetchValue(markers, lat, lng) {
var count = 0;
var latitude = [];
var longitude =[];
for (var i = 0; i < markers.length; i++) {
var latit = markers[i].latitude;
var longit = markers[i].longititude;
if (lat == latit && lng == longit) {
count++;
latitude.push(latit);
longitude.push(longit);
}
else if (Math.sqrt(Math.pow((lat - latitude), 2) + Math.pow((lng - longitude), 2)) < 0.000005) {
count++;
}
}
var result = {
count: count,
latitude: latitude,
longitude: longitude
};
return result;
}
var resltval = fetchValue(markers,17.439669,78.377665);
alert(JSON.stringify(resltval));
{
“朗吉提多”:“78.377665”,
“纬度”:“17.439669”,
“名称”:“一”
},
{
“朗吉提多”:“78.377617”,
“纬度”:“17.439692”,
“姓名”:“两个”
},
{
“朗吉提多”:“78.377644”,
“纬度”:“17.439674”,
“姓名”:“三”
},
{
“朗吉提多”:“78.377665”,
“纬度”:“17.439667”,
“姓名”:“四”
}
]
函数值(标记、lat、lng){
var计数=0;
var纬度=[];
var经度=[];
对于(var i=0;i
最好直接在您的问题中发布Javascript函数。简单地说,我需要第一个值,但现在我得到的是最后一个值。看这个版本的fiddle,我无法实现这一点,您能告诉我怎么做吗
var markers = [
{
"longititude": "78.377665",
"latitude": "17.439669",
"name": "one"
},
{
"longititude": "78.377617",
"latitude": "17.439692",
"name": "two"
},
{
"longititude": "78.377644",
"latitude": "17.439674",
"name": "three"
},
{
"longititude": "78.377665",
"latitude": "17.439667",
"name": "four"
}
]
function fetchValue(markers, lat, lng) {
var count = 0;
var latitude = [];
var longitude =[];
for (var i = 0; i < markers.length; i++) {
var latit = markers[i].latitude;
var longit = markers[i].longititude;
if (lat == latit && lng == longit) {
count++;
latitude.push(latit);
longitude.push(longit);
}
else if (Math.sqrt(Math.pow((lat - latitude), 2) + Math.pow((lng - longitude), 2)) < 0.000005) {
count++;
}
}
var result = {
count: count,
latitude: latitude,
longitude: longitude
};
return result;
}
var resltval = fetchValue(markers,17.439669,78.377665);
alert(JSON.stringify(resltval));