【问题标题】:Multiple and different conditions in JavascriptJavascript中的多个不同条件
【发布时间】:2021-12-30 15:50:18
【问题描述】:

我的逻辑有问题。 如果数字大于0小于10数字为11数字为22某物。 (1、2、3、4、5、6、7、8、9、11 或 22)。

如果数字大于 10不是 11不是 22,则执行其他操作。 (10, 12, 13 ....20, 21, 23, 24...)

我只需要处理 11,但我不知道如何使用 22 插入另一个条件。

if (n >= 0 && n < 10) || (n == 11 && n == 22) {
        do something

    } else if (n >= 10 && n != 11) && (n != 22) {
        do something else
    }

【问题讨论】:

  • "数字是 11 并且数字是 22"?你可以解释吗?我不明白一个数字怎么会有两个值。
  • @Leau 如果数字是 1、2、3、4、5、6、7、8、9、11 或 22,请执行一些操作。第二个条件(else if)等于或大于 10,但不包括数字 11 或 22。
  • 在检查 n 是否为 11 或 22 时将第一个 it 语句更改为使用 ||
  • 为什么你的代码使用n &gt;= 0,而你希望它从1开始?
  • @ASDFGerte 我是这样学习的。没有必要,因为我不能有 0?

标签: javascript multiple-conditions


【解决方案1】:

试试(n &gt;= 1 &amp;&amp; n &lt;= 9) || n == 11 || n == 22,它会检查数字是否在 1 到 9 之间(1 到 9)OR它是 11 OR强> 22 岁。

然后,在您的 else if 中,只需检查 >= 10 - 小于 1 的数字,例如0,也不会触发else。

if ((n >=1 0 && n <= 9) || n == 11 || n == 22) {
    do something
} else if (n >= 10) {
    do something else
}

使用 >= 和 n > 0 && n < 10 真正意味着值 1 到 9。

此外,它是 JavaScript,数字可以是整数或浮点数,因此大于零可能是 0.1 等。

【讨论】:

  • 成功了!我仍在学习逻辑是如何工作的。 “真的意味着值 1 到 9”这对我来说现在完全有意义。谢谢
【解决方案2】:

在你的 if 语句中,你说:

n 大于或等于 0 且 n 小于 10 或者 n 等于 11 且 n 等于 22

这意味着,if 块将针对介于 0 和 9(含)或数字 11 和 22 之间的数字运行。因此,数字可以介于 0 和 9 之间,也可以同时是 11 和 22,即是不可能的。

我对 if 语句的看法:

if (n >= 1 && n <= 9 || n == 11 || n == 22) {
    do something;
}

这样,您就不会对包含和排除编号感到困惑,并确保允许 11 或 22。

第二个块将运行大于或等于 10 且不是 11 且不是 22 的数字。这很好。

else if (n >= 10 && n != 11 && n != 22) {
    do something else;
}

在这个答案中,我假设您不想完全跳过 10。如果您这样做,那么在第二个语句中,您将检查 n &gt; 10

从逻辑上讲,这是合理的。但是,我认为您不需要在第二个中检查 11 和 22,因为 if 块将首先运行,如果数字是 11 或 22,则第一个 if 块将运行。所以第二个不需要考虑它们。

【讨论】:

  • 事实上,第一个块有效,第二个有效,但没有必要。谢谢你的解释!
【解决方案3】:

根据您的示例(1、2、3、4、5、6、7、8、9、11 或 22),听起来这就是您想要的?

if ((n > 0 && n < 10) || n == 11 || n == 22) {
  // do something
} else if (n >= 10) {
  // do something else
}

编辑:添加了我忽略的else if (n &gt;= 10)

【讨论】:

  • "and ELSE IF the number is greater than 10", 0 不应该返回别的东西,不是吗?
  • 啊,你是对的。我错过了那部分
【解决方案4】:

只需进行比较,由于logical AND &amp;&amp;higher precedence 超过logical OR ||,您不需要括号。

if (n >= 0 && n < 10 || n === 11 || n === 22) {
    // 1, 2, 3, 4, 5, 6, 7, 8, 9, 11 or 22
    // do something
} else {
    // 10, 12, 13 ... 21, 23 ...
    // do something
}

【讨论】:

    【解决方案5】:

    你的第一个条件永远不会成功,因为你不能有一个大于 0 且小于 10 的数字并且这个数字等于 11 并且也等于 22(在这两种情况下,它都将大于 10 )。

    if ((n > 0 && n < 10) || n == 11 || n == 22) {
        // my number is 1, 2, 3, 4, 5, 6, 7, 8, 9, 11 or 22
    } else {
        // my number is almost everything except the values from above
    }
    

    【讨论】:

    • 不,这不是她/他要求的
    • 我编辑了我的主题以便更好地解释,如果有帮助的话:)
    • 我收到“未捕获的语法错误:意外的令牌 '||'”
    • 你能重试吗?
    • 我又试了一次,成功了!我在第二个块中加入了“else if (n >= 10) {”。谢谢!
    【解决方案6】:

    你快到了。

    要测试 1、2、3、4、5、6、7、8、9、11 或 22:

    if (n >= 0 && n < 10) || (n == 11 && n == 22) {
    

    最低限度可以改为:

    if ((n > 0 && n < 10) || (n == 11 || n == 22)) {
    

    三个重要的变化是:

    • 平衡括号以构成正确的if( ) 构造。
    • &gt;= 0 变为 &gt; 0 以达到高于零的要求。
    • 最后一个&amp;&amp;变成||

    这也改变了操作的顺序,因此在这种情况下我们实际上根本不需要任何额外的括号。这也恰好是正确的,并且更简单:

    if (n > 0 && n < 10 || n == 11 || n == 22) {
    

    ...因为&amp;&amp; 的优先级高于||,并且比较器(&gt;&lt;==)的优先级高于条件(&amp;&amp;||)。

    此时您不需要else if 条件。只需else 就足够了。 1122if 的肯定情况处理,因此n 将不是else 情况中的这两种情况。

    最终产品:

    if (n > 0 && n < 10 || n == 11 || n == 22) {
      // 1, 2, 3, 4, 5, 6, 7, 8, 9, 11 or 22
    } else {
      // Something else.  :)
    }
    

    【讨论】:

    • 它也有效!谢谢你的详细解释!
    • 值得指出的是,对于 n 的一些其他值,这也将达到肯定的情况,例如当 n 是 1.53.14 时,字符串 "5",即使n 具有布尔值 true 这将导致 if 条件执行肯定的情况。我知道,JavaScript 很奇怪。
    • 在这种情况下它只是整数值,但无论如何最好了解它是如何工作的。
    【解决方案7】:

    看看文档,不要混淆logicial AND (&amp;&amp;) 和logical OR (||)。

    function check(n) {
      if((n >= 1 && n <= 9) || (n == 11 || n == 22)) {
        console.log(n, true);
      } else if(n >= 10) {
        console.log(n, false);
      }
    }
    
    check(1)  // true
    check(11) // true
    check(22) // true
    check(0)
    check(10) // false
    check(12) // false
    check(21) // false
    check(23) // false

    【讨论】:

      猜你喜欢
      • 2013-12-08
      • 1970-01-01
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 2016-04-08
      • 2022-01-23
      相关资源
      最近更新 更多