【发布时间】:2017-01-07 09:38:36
【问题描述】:
我在 javascript 中遇到了这个问题:我有很多随机地图坐标(纬度,经度)存储在一个数组中,比如
var coordinates = [
[64,22],[55,33],[28,35],[...,...]
]
我还有一种方法可以计算其中两个点之间的距离
喜欢
var getDistance =function(point1,point2)
{
return L.dist(point1,point2);//leaflet method
}
那么这是我的问题:
如何对我的数组进行排序以使距离从第一个坐标最接近然后最接近第二个,然后最接近第三个,然后最接近第四个...?任何人都有解决方案...我迷路了:(
编辑 1:
我试图用嵌套的 for 循环来解决问题……但结果似乎是错误的。
var cloestIndex = 1;
var closestDistance = 99999999;
for (var i = 0; i < coords.length; i++) {
for (var j = i + 1; j < coords.length; j++) {
if ((Map().distance(coords[i], coords[j]) < closestDistance) &&
(Map().distance(coords[i], coords[j]) != 0){
closestDistance = (Map().distance(coords[i], coords[j]));
closestIndex = j;
}
}
console.log("CD", closestDistance + "(" + closestIndex + ")");
finalArray.push(coords[closestIndex]);
coords.splice(closestIndex, 0);
cloestDistance = 9999999;
}
【问题讨论】:
-
你是说排序前的第一个元素在排序后仍然应该是第一个,但其他元素应该重新排列以形成所有点之间的最短总路径?或者您是否想找到彼此最接近的两个元素并将它们设为结果中的前两个?如果是后者,如果最短距离在 A 点和 B 点之间,而第二最短距离在 D 点和 E 点之间呢?
-
排序时“最接近第n个”是什么意思?
-
请遵循基本的国际英语标准。句子的第一个字母大写。 “我”这个词是大写的。我们用撇号书写诸如“I'm”之类的缩写词。另外,请正确缩进您的代码。拼写检查您的帖子;例如,正确的拼写是“closest”,而不是“cloest”。粘贴您正在使用的实际代码;带有无效关键字
retrun的代码甚至不会运行,并且函数(不是方法)定义必须以function关键字开头。这不是聊天频道或短信对话。 -
@torazaburo 我编辑了,我的错。
标签: javascript arrays sorting