javascript - 如何获取数组Javascript中第二小的值的等效标签名称
问题描述
在将一个标记拖过地图后,我正在使用谷歌地图 API 来获取标记列表中最近的标记。这是我的代码:
google.maps.event.addListener(marker, 'dragend',
function (markerFunc) {
var latLng = markerFunc.latLng;
marker.position = latLng;
var smallest = Infinity;
var secondSmallest = Infinity;
var labelSecondSmallest="";
for(var i=0; i<markers.length; i++){
var distance = google.maps.geometry.spherical.computeDistanceBetween(marker.position, markers[i].position, 100);
console.log("Distance from " + marker.label + " to " + markers[i].label + " is" + distance);
if (distance < smallest) {
secondSmallest = smallest;
smallest = distance;
} else if (distance < secondSmallest) {
secondSmallest = distance;
labelSecondSmallest = markers[i].label
}
}
console.log(secondSmallest);
console.log(labelSecondSmallest);
}
);
在这里,您可以在示例中看到第二小的值是 V2 到 D2,并且浮点值打印在下面。但是,字符串D1
被打印出来,而不是D2
正确答案。如何返回预期的字符串?
解决方案
我认为问题在于您没有存储最小值的标签,因此当最小值变为第二最小值时,就没有标签可以使用了。添加一个 labelSmallest 变量并跟踪它以及距离。就像是:
google.maps.event.addListener(marker, 'dragend',
function (markerFunc) {
var latLng = markerFunc.latLng;
marker.position = latLng;
var smallest = Infinity;
var secondSmallest = Infinity;
var labelSmallest = "";
var labelSecondSmallest="";
for(var i=0; i<markers.length; i++){
var distance = google.maps.geometry.spherical.computeDistanceBetween(marker.position, markers[i].position, 100);
console.log("Distance from " + marker.label + " to " + markers[i].label + " is" + distance);
if (distance < smallest) {
secondSmallest = smallest;
labelSecondSmallest = labelSmallest;
smallest = distance;
labelSmallest = markers[i].label;
} else if (distance < secondSmallest) {
secondSmallest = distance;
labelSecondSmallest = markers[i].label;
}
}
console.log(secondSmallest);
console.log(labelSecondSmallest);
}
);
推荐阅读
- amazon-web-services - 为什么“版本”是时间流记录中的未知参数?
- sas - 将数据从长格式重组为宽格式
- python - 在 Django 中是否有处理多种表单和模型的好方法?
- c++ - C++ 中的刽子手游戏猜字母
- javascript - React - 受控组件有什么好处?
- typescript - 有没有办法从 TypeORM 关系中排除字段(或包括某些字段)
- javascript - NextJS:getStaticProps 重新验证不起作用
- postman - 如何触发 GetTripNotifications
- swagger - 如何使用带有现有 swagger.json 的 swagger-ui-dist 从基于 hapi 的服务器提供 swagger ui?
- arduino - A7 GSM/GPRS/GPS MOdules 的命令 AT+CIPSTART 出现问题