Javascript 从多个阵列的唯一元素创建新阵列
下面是我的一段代码:Javascript 从多个阵列的唯一元素创建新阵列,javascript,arrays,angularjs,google-maps,Javascript,Arrays,Angularjs,Google Maps,下面是我的一段代码: var things = new Object(); things.location = new Array(); for (var i = 0; i < clickedMarkers.length; i++) { var mark = clickedMarkers[i], markLatitude = mark.posit
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”比较每对的元素:
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]);
//get all markers for the cluster;
var clickedMarkers = cluster.getMarkers();
//get the base point to compare all other markers
var base = new google.maps.LatLng(clickedMarkers[0].position.lat(), clickedMarkers[0].position.lng());
var total = 0;
for (var i = 0; i < clickedMarkers.length; i++) {
var mark = clickedMarkers[i],
markLatitude = mark.position.lat(),
markLongitude = mark.position.lng();
var _coordinates = new google.maps.LatLng(markLatitude, markLongitude);
var point = google.maps.geometry.spherical.computeDistanceBetween(_coordinates, base);
total= total + point;
}
console.log('total', total);
if (total == 0)
{some action}
var-arr={};
for(var j=0,len=things.location.length;j
但正确的方法是比较lat和lng对的两个元素是否不同,因为对于大阵列对,lat可以相同,但lng不同
如何比较每对的两个元素?选项:
.equals
方法基于geocodezip的答案。使用了以下代码:
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]);
//get all markers for the cluster;
var clickedMarkers = cluster.getMarkers();
//get the base point to compare all other markers
var base = new google.maps.LatLng(clickedMarkers[0].position.lat(), clickedMarkers[0].position.lng());
var total = 0;
for (var i = 0; i < clickedMarkers.length; i++) {
var mark = clickedMarkers[i],
markLatitude = mark.position.lat(),
markLongitude = mark.position.lng();
var _coordinates = new google.maps.LatLng(markLatitude, markLongitude);
var point = google.maps.geometry.spherical.computeDistanceBetween(_coordinates, base);
total= total + point;
}
console.log('total', total);
if (total == 0)
{some action}
//获取集群的所有标记;
var clickedMarkers=cluster.getMarkers();
//获取基点以比较所有其他标记
var base=new google.maps.LatLng(clickedMarkers[0].position.lat(),clickedMarkers[0].position.lng());
var合计=0;
对于(变量i=0;i