Здраствуйте. Возможно очень странно сформулировал вопрос за это извините. Решая задачу наткнулся на одну проблему. Есть входной двумерный массив с странами:
[["USA", "BRA"], ["JPN", "PHL"], ["BRA", "UAE"], ["UAE", "JPN"]]
Нужно вывести правильную последовательность следования маршрутов объединив элементы массива в одну строку. Вот такой результат должен вывестись:
"USA, BRA, UAE, JPN, PHL"
Всё бы ничего и мой код работал бы (чуть ниже), если бы был известен начальный маршрут от которого нужно отталкиваться. Если поменять местами входные данные то мой код перестаёт выдавать правильную последовательность. Точка начала маршрута у меня находиться в переменной initialRoute. Пример:
[["JPN", "PHL"], ["USA", "BRA"], ["BRA", "UAE"], ["UAE", "JPN"]],
Вывод: "JPN, PHL"
Вот мой код
function findRoutes(routes) {
const dictionary = {};
// Точка начала маршрута
const initialRoute = routes[0][0];
const stack = [initialRoute];
routes.forEach((el) => {
dictionary[el[0]] = el[1];
});
function checkRoutesPos(dictionary, initialRoute) {
let thisRoute = initialRoute;
let pushElem = dictionary[thisRoute];
while (pushElem !== undefined) {
thisRoute = dictionary[thisRoute];
stack.push(pushElem);
pushElem = dictionary[thisRoute];
}
}
checkRoutesPos(dictionary, initialRoute);
return stack.join(", ");
}
console.log(
findRoutes([
["USA", "BRA"],
["JPN", "PHL"],
["BRA", "UAE"],
["UAE", "JPN"],
])
);
console.log(
findRoutes([
["JPN", "PHL"],
["USA", "BRA"],
["BRA", "UAE"],
["UAE", "JPN"],
])
);