【问题标题】:check condition if match any of the following [duplicate]检查条件是否符合以下任何一项[重复]
【发布时间】:2021-02-10 19:04:57
【问题描述】:

我正在尝试使用逻辑或运算符检查条件,似乎我做错了。如果它只是 1,它当然可以工作,但是当我添加其他值时,它似乎不正确,如下所示。我如何使这项工作检查它是否不止一个。是不是用引号引起来?

if (data.Items.find((item) => item.OrgUnit?.Id === (parseInt(match))).Role.Id === 110 || 120 || 130 || 140) {
  alert = "test"
}

【问题讨论】:

  • 您能否提供更多背景信息来说明您究竟要在这里完成什么?通常情况下,您不必在同一个表达式中进行两次比较 ===

标签: javascript


【解决方案1】:

您无法像这样与多个值进行比较。你可以改用Array#includes

if([110 , 120 , 130 ,140].includes(data.Items.find((item) => item.OrgUnit?.Id === (parseInt(match))).Role.Id)){

}

【讨论】:

    【解决方案2】:

    因为对于||的每个实例都需要重复等式的左侧

    let roleId = data.Items.find((item) => item.OrgUnit?.Id === (parseInt(match))).Role.Id
    if(roleId === 110 || roleId === 120 || roleId === 130 || roleId === 140){
      alert="test"
    }
    

    也可以这样写:

    let roleId = data.Items.find((item) => item.OrgUnit?.Id === (parseInt(match))).Role.Id
    if([110,120,130,140].includes(roleId)){
      alert="test"
    }
    

    【讨论】:

      【解决方案3】:

      除了iota的回答,以下部分代码可能会失败

      data.Items.find((item) => item.OrgUnit?.Id === (parseInt(match))).Role.Id
      

      因为 find 可能返回 undefined ,所以需要在 find 方法的结果中加上 ?

      const values = [110,120,130,140];
      const roleId = data.Items.find((item) => item.OrgUnit?.Id === (parseInt(match)))?.Role.Id
      if (values.includes(roleId)) {
        alert = "test"
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-01
        • 2017-02-01
        • 1970-01-01
        • 2012-09-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多