Должен ли я использовать оператор switch для связывания идентификаторов CSS с переменными JavaScript?

#javascript #jquery #html #css

#javascript #jquery #HTML #css

Вопрос:

 function getVariableFromID(ID) {
    switch (ID) {
    case "GTA1":
        return GTA1;
    case "GTA2":
        return GTA2;
    case "GTA3":
        return GTA3;
            ...
    case "GTJ0":
        return GTJ0;
    }
}
 

Итак, в моем коде есть оператор switch, который принимает #id тега DIV с использованием .attr и связывает его с переменной javascript. Каждый числовой код представляет одну клетку на сетке, подобной шахматной доске. Есть 100 квадратов. Существует ли более простой или компактный метод для выполнения подобных вычислений, или это самый простой способ?

Комментарии:

1. в этом коде getVariableFromID(x) == eval(x) ожидайте, что eval работает для всех ключей без пользовательского кодирования.

2. Я слышал, что eval() — плохая практика. И у меня есть только определенный набор переменных, которые мне нужно оценить. Но вы правы, это несколько упростило бы код.

Ответ №1:

Используйте array вместо 100 переменных и сотен условий в switch. Массив может быть массивом строк / чисел или объектов. Объявите массив с количеством элементов, которые вы хотите, и получите номер ID для использования в качестве index массива.

 arrGTA = ["somevalue1", "somevalue2"]; //Could be array of strings/numbers or objects.
function getVariableFromID(ID) {
    idx = parseInt(ID.replace("GTA", ""));
    return arrGTA[idx-1];
}
 

Комментарии:

1. Мне придется попробовать это. Я уже добавил объекты в массив для проверки наличия плитки. selected==true как часть кода перемещения игровых элементов, так что это может быть очень элегантным решением. Спасибо!

Ответ №2:

Я принимаю то, что сказал Адил, что вы можете напрямую возвращать ID

 function getVariableFromID(ID) {
        return ID;
}
 

Комментарии:

1. Он возвращает не строку, т.Е. Идентификатор, А переменную.