Сделайте изложение элегантным - PullRequest
0 голосов
/ 16 апреля 2020

Я думаю, что использование оператора switch - это слишком много кода, я видел на некоторых веб-сайтах более эффективные способы упростить оператор switch или даже преобразовать в литерал объекта, как некоторые примеры, показанные на этом веб-сайте по ссылке ниже

Перезапись Javascript: замена оператора переключения

Использование литералов объекта и метода карты вместо старого оператора переключения

Я пытался преобразовать оператор switch и вот пример того, что использовали. Оба они не работают должным образом, они отображают неправильный список городов, когда выбрана страна. Англия показывает города Шотландии. html и так далее.

Пример: 1

const city = (county) => ({

        "England": $('#uk_states').load('england-cities.html'),
        "Scotland": $('#uk_states').load('scotland-cities.html'),
        //...

    })[county]

let county = city([$('#Uk_Cities option:selected').text()]);

Пример: 2

let city = {
            "England": {
                "file": $('#uk_states').load('england-cities.html'),
                "label": "england"
            },
            "Scotland": {
                "file": $('#uk_states').load('scotland-cities.html'),
                "label": "scotland"
            },
            //...

let county = city[$('#Uk_Cities option:selected').text()];
let countryCity = `${county.file} ${county.label}`;

Я думаю, что проблема может быть связана с let county = city([$('#Uk_Cities option:selected').text()]);

I не знаю, правильно ли я размещаю переключатель (графство) при преобразовании в литерал объекта и в словарь типов городов.

Не могли бы вы, ребята, помочь мне, пожалуйста?

Большое спасибо.

let county = $('#Uk_Cities option:selected').text();
        switch (county) {
            case 'England':
                $('#uk_states').load('england-cities.html');
                break;
            case 'Scotland':
                $('#uk_states').load('scotland-cities.html');
                break;
            case 'Wales':
                $('#uk_states').load('wales-cities.html');
                break;
            case 'Northern Ireland':
                $('#uk_states').load('nireland-cities.html');
                break;
            default:
        }
    });
    $('#uk_states').change(function () {
        let stateSelected = $(this).val();
        let responseStatus = 'success';
        getTheWeatherData(stateSelected);
    });

1 Ответ

0 голосов
/ 16 апреля 2020

Вы можете просто сохранить входы и выходы в объекте, а затем найти правильный вывод этого объекта.

// Store the input and output in an object
let locations = {
  England:"england",
  Scotland:"scotland",
  Wales:"wales",
  "Northern Ireland":"nireland"
};

let county = $('#Uk_Cities option:selected').text();

// Just load the correct document by building the string based on 
// looking up the key in the object
$('#uk_states').load(locations[county] + '-cities.html');

$('#uk_states').change(function () {
   let stateSelected = $(this).val();
   let responseStatus = 'success';
   getTheWeatherData(stateSelected);
});
...