在javascript中编写if语句的替代方法

时间:2017-09-21 09:27:53

标签: javascript

我正在缩小我的javascript代码,我想知道是否有更多的方式来编写这个巨大的if语句:

if (operator_list == "=" || operator_list == "<>" || operator_list == ">" || operator_list == "<" || operator_list == ">=" || operator_list == "<=" )

有什么想法吗?

5 个答案:

答案 0 :(得分:4)

使用数组并检查它是否包含operator_list

let checkArr = ["=", "<>", ">", "<", ">=", "<="];
if (checkArr.includes(operator_list)) {}

答案 1 :(得分:2)

你可以为它采取正则表达式。

function test(s) {
    return /^(=|<>|>|<|>=|<=)$/.test(s);
}

console.log(["=", "<>", ">", "<", ">=", "<=", 'foo', '<a='].map(test));

答案 2 :(得分:1)

我认为将表达式重构为函数并赋予它一个好名称会使它更优雅:

if (isValidOperator(operator_list) ) {
 // Do something
}

function isValidOperator(operator) {
  return operator == "=" || operator == "<>" || operator == ">" || operator == "<" || operator == ">=" || operator == "<=";
}

通过这种方式,您可以向读者解释您的代码的用途。在稍后阶段,有人可以重构函数以使其更容易理解。

其他读物:

答案 3 :(得分:0)

您可以创建可接受的运算符数组

var arr = [ "=", "<=" ];

然后检查operator是否是数组的元素之一

arr.indexOf( operator_list ) != -1 //will return true if operator_list is in arr

答案 4 :(得分:0)

而不是if-test考虑in-array test,如下所示:

var arrOps = ['=','<>','>','<','>=','<='];

var op = '=';

console.log ("Valid operator? ",   arrOps.indexOf(op) != -1);

使用数组的indexOf方法的优点是它比include方法享有更高的浏览器兼容性;请参阅herehere