Javascript 用于确定数值属于哪个范围的优雅解决方案

Javascript 用于确定数值属于哪个范围的优雅解决方案,javascript,numbers,Javascript,Numbers,如果我向一个函数提供一个数字,我将如何根据这样的一系列数字来验证它 1-10 = A 11-20 = B 21-30 = C ... 我知道我可以用if语句来评估这一点,但我正在寻找更优雅的东西,因为问题变得更加复杂,我不想要一个肮脏的ifs网络 var letter = ""; function getLetter(num) { if (num >= 1 && num <= 10) { letter = "A"; } else if (num

如果我向一个函数提供一个数字,我将如何根据这样的一系列数字来验证它

1-10  = A
11-20 = B
21-30 = C
...
我知道我可以用if语句来评估这一点,但我正在寻找更优雅的东西,因为问题变得更加复杂,我不想要一个肮脏的ifs网络

var letter = "";

function getLetter(num) {
  if (num >= 1 && num <= 10) {
    letter = "A";
  } else if (num >= 11 && num <= 20) {
    letter = "B";
  }
  // this eventually gets gross
}
getLetter14的预期结果为B,getLetter49的预期结果为E,等等。出于类似原因,案例/开关也被排除在表外


欢迎提出任何其他想法。

关于您的代码,我只想谈一点

function getLetter(num) {
  if (num >= 1 && num <= 10) {
    letter = "A";
  } else if (num >= 11 && num <= 20) {
    letter = "B";
  }
  // this eventually gets gross
}

只是关于你的代码的一点

function getLetter(num) {
  if (num >= 1 && num <= 10) {
    letter = "A";
  } else if (num >= 11 && num <= 20) {
    letter = "B";
  }
  // this eventually gets gross
}

如果你想把你的范围放进一个对象中,然后循环通过它,效果很好

函数getLetter编号{ 设范围={ 答:[1,10], b:[11,20], c:[21,30], d:[31,36], e:[37、40] } 返回Object.keysranges.findkey=>{ 设currRange=范围[键];
如果要将范围放入对象中,然后循环该对象,则if number>=currRange[0]&&number可以正常工作

函数getLetter编号{ 设范围={ 答:[1,10], b:[11,20], c:[21,30], d:[31,36], e、40、37] } 返回Object.keysranges.findkey=>{ 设currRange=范围[键];
如果数字>=电流范围[0]&&number或者如果你想对你的字母更自由一点:将它们存储在一个数组中,并从数组中获取索引。该死。当它们不是全部10个值时,我简化了问题。你在技术上是正确的,我会给你答案。这是我愚蠢的错误。@daveycroqet-我添加了一个example@daveycroqet光明的答案似乎是正确的为了更好…它甚至可以修改intervals@Bergi-同意,我借用了Light的答案,改进了它,使它更健壮如果你想让你的信件更自由一点:将它们存储在数组中并从数组中获取索引。该死。当它们不是全部10个值时,我简化了问题。从技术上讲,你是正确的“ect,我会给你答案的。这是我愚蠢的错误。”戴维·克罗克特-我加了一句example@daveycroqetLight的答案似乎很好……它甚至可以修改intervals@Bergi-同意,我借用了Light的答案,改进了它,使它更加健壮。为了公平起见,如果不需要同时检查两个lowe,则使用if/elser和上界是相等宽度的范围?或者它们可以是可变宽度,例如1-5、6-10、11-20?公平地说,如果不需要同时检查下边界和上界是相等宽度的范围,则使用if/else?或者它们可以是可变宽度,例如1-5、6-10、11-20?谢谢。这可能会更接近我需要的,但是我认为Bravo也用一个可行的解决方案更新了他的答案。find回调应该返回一个布尔值,而不是字符串或未定义的。谢谢你。这可能会更接近我需要的,但我认为Bravo也用一个可行的解决方案更新了他的答案。find回调应该返回一个布尔值,而不是字符串或未定义的。