2017-11-30 7 views
1

の改善私は可能であれば私はそれが非常に扱いにくい見つけるように改善したい条件文を持っている:が条件ロジックに

let action 

    if(options.add) { 
     action = 'ADD' 
    } else if(options.update) { 
     action = 'UPDATE' 
    } else { 
     action = 'REMOVE' 
    } 

は、ある種のこのスイッチまたは三元を作ることが可能ですか?

答えて

1

あなたのコードは今、私には大丈夫です。しかし、あなたがまだ選択肢を探しているのなら、Ternary?

let action = options.add ? "ADD" : (options.update ? "UPDATE" : "REMOVE") ; 
+0

興味深い、私は三元スタイルのこのタイプの知りませんでした – styler

0

あなたはよりダイナミックなソリューションをしたい場合は、アクションの配列を作成し、そのオブジェクトでそのアクションを見つけるために、そのアレイ上で見つけ使用することができますあなたが三元操作をしたい場合

let action; 
action = (options.add) ? 'ADD' : ((options.update) ? 'UPDATE' : 'REMOVE'); 
0
action = options.add && 'ADD' || options.update && 'UPDATE' || 'REMOVE' 
1

これを試してみて、それを変数に代入するか、またはデフォルト値のREMOVEを設定します。

let action; 
 
let options = {add: 1} 
 
let actions = ['add', 'update', 'remove']; 
 

 
action = (actions 
 
    .find(a => options[a]) || 'remove') 
 
    .toUpperCase(); 
 

 
console.log(action)

また、オプションのオブジェクトを取得し、アクション値を返す関数を作ることができます。

let action; 
 
var actions = ['add', 'update', 'remove']; 
 

 
function setAction(options = {}) { 
 
    return (actions.find(a => options[a]) || 'remove') 
 
    .toUpperCase(); 
 
} 
 

 
action = setAction({add: 1}); 
 
console.log(action) 
 

 
action = setAction(); 
 
console.log(action)

関連する問題