2016-10-11 15 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, 
    ... 
    }; 
} 

しかし、私の質問は、複数の値を初期化するより良い方法はありますか?

あなたが

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

を表示するには、どの要素を設定するには、配列のオブジェクトを使用することができます

答えて

2

その後、私はES2015にそれを書いた、とのために真の

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

に値を設定する場合の配列を反復処理bucleは次のようになります。 'for(case [type]のうちの1つ){ctrl.show [i] = true; } ' そして期待どおりに動作します。 –

関連する問題