2016-10-11 3 views
2

У меня есть функция для определения видимости нескольких элементов в зависимости от выбранного пользователем элемента.Элегантный способ инициализации нескольких переменных в 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, 
    ... 
    }; 
} 

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

ответ

2

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

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

Тогда итерации по массиву случаев, чтобы установить значение истинного

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

Я написал его в ES2015, так и для bucle приводит к: 'для (пусть i случаев [type]) {ctrl.show [i] = true; } ' И работает, как и ожидалось. –

Смежные вопросы