改善条件逻辑

时间:2017-11-30 11:47:20

标签: javascript

我有条件声明,如果可能的话我想改进,因为我觉得它很笨拙:

    let action

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

是否可以将其设为某种开关或三元组?

4 个答案:

答案 0 :(得分:1)

您的代码现在看起来不错。但如果你还在寻找替代品,那么Ternary?

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

答案 1 :(得分:1)

如果您想要更多动态解决方案,您可以创建一系列操作,然后使用该数组上的find在对象中查找该操作并将其分配给变量或设置默认值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)

答案 2 :(得分:0)

如果您想要三元操作,请尝试此操作

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

答案 3 :(得分:0)

action = options.add && 'ADD' || options.update && 'UPDATE' || 'REMOVE'