【问题标题】:Using multiple logical "or" operators使用多个逻辑“或”运算符
【发布时间】:2014-01-02 21:12:25
【问题描述】:

除了使用switch语句(或写if(x === 2 || x === 3 || x === 4)等),有没有办法实现多个“或”(||)运算符?

例如:

if(x === 2 || 3)
    alert("Yes");

这会针对 x 的每个值发出警报

【问题讨论】:

  • @AlexeiLevenkov JavaScript(添加标签到问题)
  • @cloudcoder2000 这并没有真正回答我的问题 - 我想知道是否有重复的 if(x === "a" || x === "b" || etc...) 的简写
  • @user2521439 抱歉,我没有正确阅读问题。
  • @cloudcoder2000 没问题!

标签: javascript logic control-flow


【解决方案1】:

你最接近的可能是做这样的事情:

if ([2,3].indexOf(x) > -1){
}

DOCS

当然,如果这对您来说是个问题,那将需要 IE 8 及更低版本的 shim。

【讨论】:

  • 感谢您在这种情况下的快速响应,但想知道是否有任何通用语法
  • +1。 @user2521439 - 不,JavaScript 中没有用于多个匹配的语言结构(switch 是您所说的一种,但它通常占用太多空间)。函数式语言(F#、Haskell 等)确实有这样的匹配语言结构。
【解决方案2】:

大量选择的标准方法是根据语言使用字典/哈希集/哈希表。

对于 JavaScript,数组和对象都可以工作:

var isPresent = [];  
isPresent[2] = true;
isPresent[43] = true;
if (isPresent[x])...

对于少量项目,Adam Rackis 的线性搜索答案更具可读性

 [2,3].indexOf(x)

【讨论】:

    猜你喜欢
    • 2011-08-25
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多