Итак, посмотрим.Мы предполагаем предопределенный набор (x, y) координат.Вам дана другая точка, и вы должны найти ближайший элемент массива к данной точке.Я собираюсь предположить, что «ближайший» означает наименьшее пифагорейское или евклидово расстояние от данной точки до каждой из других точек.
Самый простой алгоритм, вероятно, самый лучший (если вы хотите посмотреть на других в Википедия , есть на это).Поскольку вы не дали нам никакого кода для структуры, я собираюсь предположить массив объектов, каждый из которых имеет свойство x
и y
, то же самое для данной точки.
var findNearestPoint = function (p, points) {
var minDist = Number.POSITIVE_INFINITY,
minPoint = -1,
i,
l,
curDist,
sqr = function(x) { return x * x; };
for (i = 0, l = points.length; i < l; i++) {
curDist = sqr(p.x - points[i].x) + sqr(p.y - points[i].y);
if (curDist < minDist) {
minDist = curDist;
minPoint = i;
}
}
return points[i];
};
(Не проверено, но вы поняли.)