Вам не нужно рассчитать расстояние между каждой парой элементов, и вам не нужно сортировать. Вам просто нужно перебрать все элементы и следить за наименьшее расстояние/элемент пары:
function closest(elements, toElement){
var closestDistance=Infinity, closestElement;
for (var i=elements.length;i--;){
var fromElement = elements[i];
if (fromElement==toElement) continue;
var distance = distanceBetween(toElement,fromElement);
if (distance<closestDistance){
closestElement = fromElement;
closestDistance = distance;
}
}
return closestElement;
}
Если вы делаете это часто и, если вы протестировали простое решение выше, чтобы доказать, что это слишком медленно , затем посмотрите на space partitioning или еще один способ для хэширования ваших местоположений для быстрого поиска.