JSFiddle - React, Tailwind, and code Playground

JavaScript

function findFrom(routes, dest) {
  let from = null;
	routes.forEach(function(cv, i, arr) {
  	if (cv[1] == dest) {
      //console.log('found - ' + cv[1]);
      from = cv[0];
    }
  });
  return from;
}

function findDest(routes, from) {
  let dest = null;
	routes.forEach(function(cv, i, arr) {
  	if (cv[0] == from) {
      //console.log('found - ' + cv[1]);
      dest = cv[1];
    }
  });
  return dest;
}

function findRoutes(routes) {
	var output = [];
  //start with first one
  if (routes.length == 0) {
    return output;
  }
  
  //find starting point
  var firstFrom = null;
  var from = routes[0][0]; 
  var dest = null;
  var counter = 0;
  do {    
    firstFrom = findFrom(routes, from);
    if (firstFrom != null) {
      from = firstFrom
    }
    counter++;
  } while (firstFrom != null && counter < routes.length);
  
  //write down starting point
  output.push(from);
  
  //find subsequent elements
  counter = 0; //reset
  do {
    dest = findDest(routes, from);
    if (dest != null) {
      output.push(dest);
      from = dest;
    }
    counter++;
  } while (dest != null && counter < routes.length);
  return output;
}

console.log(findRoutes([["USA","BRA"],["JPN","PHL"],["BRA","UAE"],["UAE","JPN"]]));

console.log(findRoutes([["Chicago", "Winnipeg"], ["Halifax", "Montreal"], ["Montreal", "Toronto"], ["Toronto", "Chicago"], ["Winnipeg", "Seattle"]]));