【问题标题】:How to check if a number is less or equal in a switch statement [duplicate]如何在switch语句中检查数字是否小于或等于[重复]
【发布时间】:2021-08-16 21:26:46
【问题描述】:

所以我试图在 switch 语句中检查一个数字是否大于或等于另一个数字,但是,我遇到了一个问题,它返回 undefined。

const getBalance = (userid) => {
  const balance = 1000000;

  switch (balance) {
    case balance <= 0:
      return "1";
    case balance <= 500:
      return "2";
    case balance <= 1000:
      return "3";
  }
};

我该如何解决这个问题?

【问题讨论】:

  • 阈值有什么逻辑吗?就像它们是 500 的倍数?或者它们可能完全不相关,比如balance &lt;= 236
  • @trincot 他们不相关
  • switch 语句不是为了做这个,你可以让它工作,但它没有任何意义。使用 if 语句
  • 不使用简单的if/else if/else 块会怎样?

标签: javascript node.js


【解决方案1】:

const getBalance = (userid) => {
  const balance = userid;

  switch (true) {
    case balance <= 0:
      return "1"
    case balance <= 500:
      return "2"
    case balance <= 1000:
      return "3"
    default:
      return "4"
  }
}

console.log(getBalance(10))
console.log(getBalance(100))
console.log(getBalance(500))
console.log(getBalance(600))
console.log(getBalance(1000))
console.log(getBalance(1200))

但这不是一个优雅的解决方案

【讨论】:

    【解决方案2】:

    您缺少 switch 语句中的默认值

     switch (balance) {
    case balance <= 0:
      return "1";
    case balance <= 500:
      return "2";
    case balance <= 1000:
      return "3";
    default: 
     return "4";
    

    }

    更改方法后,您应该得到“4”作为返回值

    【讨论】:

    • 也不需要在每行case 重复balance
    • @Aaron 这不是真的,这不是典型的带值开关,所以很遗憾需要重复
    • 我试过这个,但问题是,当我将余额发送到 100 时,由于某种原因它仍然返回 4
    • 那么我的答案是如何以不同的形式发布的?为什么-1
    【解决方案3】:

    您以错误的方式使用switchcase 表达式是布尔值,它永远不会匹配balance 的值。您可以改用findIndex

    const getBalance = (balance) => {
        return [0, 500, 1000, Infinity].findIndex(lim => balance <= lim) + 1;
    }
    
    console.log(getBalance(-10));
    console.log(getBalance(100));
    console.log(getBalance(500));
    console.log(getBalance(600));
    console.log(getBalance(1000));
    console.log(getBalance(1200));

    【讨论】:

    • 我认为这是正确的解决方案
    【解决方案4】:

    你申请的条件不完全正确,如果输入10, 0 && %%

    【讨论】:

      猜你喜欢
      • 2014-10-01
      • 2013-09-01
      • 2018-09-27
      • 2015-10-17
      • 1970-01-01
      • 2015-12-11
      • 2021-10-12
      • 2016-08-17
      相关资源
      最近更新 更多