这是我的一段代码:
var things = new Object();
things.location = new Array();
for (var i = 0; i < clickedMarkers.length; i++) {
var mark = clickedMarkers[i],
markLatitude = mark.position.lat(),
markLongitude = mark.position.lng();
things.location.push({
'lat': markLatitude,
'lng': markLongitude
});
}
因此我们有以下对:
{lat:53.5412,lng:9.994180000000028},{lat:53.0862838,lng:8.789075099999991}, {lat:53.0738902,lng:8.805211800000052},{lat:53.5412,lng:9.994180000000028},{lat:53.5412,lng:9.994180000000028}
我使用以下代码通过“lat”比较每对的元素:
var arr = {};
for ( var j=0, len=things.location.length; j < len; j++ )
arr[things.location[j]['lat']] = things.location[j];
things.location = new Array();
for ( var key in arr )
things.location.push(arr[key]);
但正确的方法是比较 lat 和 lng 对的两个元素是否不同,因为对于大数组对 - lat 可以相同,但 lng - 不同。
如何比较每对的两个元素?
最佳答案
选项:
- 使用
google.maps.LatLng
.equals
方法 - 使用
google.maps.geometry.spherical.computeDistanceBetween
方法,如果距离小于某个小数(比如 1.0 米),则将它们视为相同(纬度和经度是 float ,比较它们是否相等是有问题的)。
关于javascript - 从多个数组唯一的元素创建一个新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36989127/