2016-10-11 98 views
2

多個變量優雅的方式,我有一個函數來設置取決於類型元素的用戶選擇了多個元素的可見性。給init在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箱子[型]){ctrl.show [I] = TRUE; }' 它按預期工作。 –