Элегантный способ инициализации нескольких переменных в Javascript

#javascript #optimization #initialization

#javascript #оптимизация #инициализация

Вопрос:

У меня есть функция для настройки видимости нескольких элементов в зависимости от типа выбранного пользователем элемента.

   function setVisibility(type) {
    switch (type) {
      case 'A':
        ctrl.show.1 = true;
        ctrl.show.2 = true;
        ctrl.show.3 = true;
        ...
        break;
      case 'B':
        ctrl.show.1 = true;
        ctrl.show.3 = true;
        ctrl.show.5 = true;
        ...
        break;
      case 'C':
        ctrl.show.2 = true;
        ctrl.show.4 = true;
        ctrl.show.6 = true;
         ...
        break;
      case 'D':
      ...
      default:
        break;
    }
  

Каждый случай имеет разные элементы, и некоторые из них являются общими для них. Я думал изменить переключатель с помощью объекта, например:

 function setVisibility(type) {
 let cases = {
   A = initA,
   B = initB,
   ...
 };
  cases[type]();
}
function initA(){
  ctrl.show = {
    1 : true,
    2 : true,
    3 : true,
     ...
    };
}
  

Но мой вопрос в том, есть ли лучший способ инициализации нескольких значений?

Ответ №1:

Вы можете использовать объект массивов, чтобы настроить, какие элементы отображать

 var cases = {
    A: [1, 2, 3],
    // ...
};
  

Затем выполните итерацию по массиву cases, чтобы установить значение true

 for (var i in cases[type]) {
    ctrl.show[cases[type][i]] = true;
}
  

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

1. Я написал это в ES2015, и для результатов bucle в: for (let i of cases[type]) { ctrl.show[i] = true; } И это работает так, как ожидалось.