根据对多个数组唯一的元素创建一个新数组
Create a new array from the elements that are unique for several arrays
下面是我的一段代码:
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米),则将它们视为相同的数字(纬度和经度是浮点数,比较它们是否相等是有问题的)
基于地理编码的答案。使用了以下代码:
//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}
相关文章:
- csv数据中的新数组
- javascript函数,它将数组作为输入,将每个数组元素增加1,并返回增加值的新数组
- 按值名称过滤掉重复的对象,并将其放入新数组中
- 根据对多个数组唯一的元素创建一个新数组
- 使用javascript/jquery从现有数组中创建一个新数组,该数组保存项目存在的次数
- Javascript-在一个数组中搜索整个单词,并创建一个符合条件的新数组
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- 将数组值替换为循环以创建新数组
- 带有附加元素的新数组不会可视化
- 创建新数组和清除长度之间的差异
- 如何将新数组传递给函数
- 创建新数组或增加计数器
- 将字符串数组的子字符串复制到Javascript中的新数组中
- 如何使用旧数组中的数据创建新数组
- 如何过滤/修改主干集合本身,而不是获取新数组
- 如何比较具有相同值的两个数组并将该相同值存储在新数组中
- 将现有数组的元素复制到新数组而不使用拼接
- 如何将新数组添加到另一个数组的特定对象中
- 将一个新数组放入另一个数组中
- 为什么它在创建json对象时创建数组新数组