У меня есть массив объектов, каждый из которых содержит координаты x, y.Я хотел бы рассчитать кратчайший путь между объектами в JavaScript.
Массив островов также всегда будет случайным, поэтому маршрут должен рассчитываться динамически.
Мне не удалось правильно реализоватьАлгоритм Дейкстры в JavaScript.Я пытался использовать несколько алгоритмов поиска путей из других языков и был неудачным.
Объекты в массиве
var selected_islands= [{
id: 0,
name: "Island1",
x: 212,
y: 1271,
size: 50,
}, {
id: 1,
name: "Island2",
x: 495,
y: 226,
size: 15,
}, {
id: 2,
name: "Island3",
x: 473,
y: 832,
size: 25,
}]
Запуск метода на всех островах в массиве
for (i in selected_islands) {
duped = selected_islands[i].findClosestIsland(duped);
console.log(duped);
}
Внутри моего Island Class
compareDistance(island) {
return this.pythagoreanTheorem(island.x, island.y);
}
findClosestIsland(duped) {
var lowest_val = Number.MAX_SAFE_INTEGER; // Setting high initial value
for (i in duped) {
if (this.compareDistance(selected_islands[i]) < lowest_val && this.compareDistance(selected_islands[i]) != 0) {
lowest_val = this.compareDistance(selected_islands[i]);
closest_island = selected_islands[i];
}
}
duped.splice(0,1); // Immutable, ruins array
return duped;
}
метод соединения разрушает мой дублированный массив.Логика немного нечеткая для меня.Должен ли я создать новый массив "посещенных островов" и проходить через него каждый раз?
Спасибо за понимание:)