Сейчас я могу обращаться к данным через regions[0].Towns[0] или regions[0].Region, но как лучше переструктурировать массив regions, чтобы можно было напрямую использовать название региона для получения списка городов? Нужно реализовать два связанных выпадающих списка, где выбор в первом списке определяет варианты во втором.
Если данных много, создай класс RegionManager с методами getRegions() и getTowns(regionName). Это будет чище, чем объект или Map, особенно когда логика усложнится. Но стоит ли заморачиваться с классами сейчас?
Для двухуровневой навигации лучше брать объект, а не массив. Переделай структуру:
var regions = {
"Московская область": ['Химки', 'Подольск', 'Мытищи'],
"Ленинградская область": ['Гатчина', 'Выборг', 'Тосно']
};
Теперь просто пишешь regions["Московская область"] и получаешь массив городов. Для выпадающих списков: Object.keys(regions) для первого списка, regions[selectedRegion] для второго.