#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; }
И это работает так, как ожидалось.