如何查找数组是否具有匹配的对象?

时间:2018-11-07 05:46:59

标签: javascript jquery arrays

我需要循环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个匹配项。

经度和纬度都遵循相同的索引可能会有所帮助

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)