我需要循环2个数组,看看它们是否具有匹配的对象,如果是,则在地图上添加一个标记,当我单击它时,我想告诉匹配坐标的总结果数,在以下示例中是2。该标记很好,因为我正在循环数组并根据坐标放置它,但是我无法给出同一坐标内的货币总数。
因此,我有:
latitude = [{"45.99"},{43.22},{"45.99"}];
longitude = [{"9.22"},{"2.645"},{"9.22"}];
This answer有所帮助,基本上它使用filter
,但是我想做的是检查两个数组是否都具有匹配的值,并将结果数放在模式中。
我目前正在这样做:
$("#results .modal-body").html("Risultati"+" " +longitude.length + "<button id='goToResul' type='button' class='btn btn-danger'>Go to result</button>");
但这将检查整个longitude
数组的长度,而在数组示例中,我们有两次45.99和9.22,这意味着2个匹配项。
经度和纬度都遵循相同的索引可能会有所帮助
答案 0 :(得分:1)
根据我的理解,您可以尝试以下方法
var lat = ["45.99","43.22","45.99", "45.99"]
, lng = ["9.22","2.645","9.22", "9.22"]
, latlngCount = Object.entries(lat.reduce((o, d, i) => (o[lat[i]+'-'+lng[i]] = (o[lat[i]+'-'+lng[i]] || 0) + 1, o) , {})).filter(([latlng, count]) => count > 1)
, matchingCount = latlngCount.reduce((sum, [latlng, count]) => sum + count, 0)
console.log('Matching lat lng', latlngCount)
console.log('Matching Count', matchingCount)
答案 1 :(得分:0)
你的意思是这样吗?
count=0
latitude = ["45.99","43.22","45.99"];
longitude = ["9.22","2.645","9.22"];
lat=latitude.concat([])
long=longitude.concat([])
for(i in latitude){
lat.shift()
long.shift()
if((index=lat.indexOf(latitude[i]))!==-1){
if(long[index]==longitude[i]){
//DO SOMETHING IF A PAIR IS FOUND
count++
}
}
}
console.log(count)