Shorten JS if or statement
本问题已经有最佳答案,请猛点这里访问。
在javascript中是否有这样的缩短:
可以使用array.indexof
1 | [1,2,3,4].indexOf(x) !== -1 |
还可以将对象用作某种哈希图:
1 2 3 4 5 | //Note: Keys will be coerced to strings so // don't use this method if you are looking for an object or if you need // to distinguish the number 1 from the string"1" my_values = {1:true, 2:true, 3:true, 'foo':true} my_values.hasOwnProperty('foo') |
顺便说一下,在大多数情况下,您应该使用"=="严格相等运算符,而不是
如果您的案例不那么简单,可以这样表达:
1 | if (1 <= x && x <= 4) |
您可以使用数组和
1 | if ([1,2,3,4].indexOf(x) > -1) |
注意,EDOCX1[1]可能需要重新实施。
怎么样:
1 2 | if (x > 0 && x < 5) { } |
如果不编写一个将数组作为输入并返回true/false或某种数组搜索的函数,就不可能。维护/其他开发人员很难阅读。而且速度会慢很多。所以只要坚持语义正确的较长版本。
另外,查看是否有任何东西可以被显著缩短的一个好方法是通过关闭的编译器运行它并查看它的结果。
你可以写一个函数:
1 2 3 4 5 | function isAny(x) { for (var i = 1; i < arguments.length; ++i) if (arguments[i] === x) return true; return false; } |
然后你可以说:
1 | if (isAny(x, 1, 2, 3, 4)) { /* ... */ } |
(使用"=="或"=="取决于您想要的确切语义。)