我正在缩小我的javascript代码,我想知道是否有更多的方式来编写这个巨大的if语句:
if (operator_list == "=" || operator_list == "<>" || operator_list == ">" || operator_list == "<" || operator_list == ">=" || operator_list == "<=" )
有什么想法吗?
答案 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)