javascript - 如何处理超出范围的值? switch 还是 if 语句?

标签 javascript switch-statement

我有一组测试分数,其值范围为 10 到 990。我想将每个分数置于特定范围内。

这是我使用的脚本:

function between(x, min, max) {
  return (x >= min && x <= max);
}

var overallScore = 960;

if(between(overallScore, 905, 990))  {
  var output = "905 - 990";
}
if(between(overallScore, 785, 900))  {
  var output = "785 - 900";
}
if(between(overallScore, 605, 780))  {
  var output = "605 - 780";
}
if(between(overallScore, 405, 600))  {
  var output = "405 - 600";
}
if(between(overallScore, 255, 400))  {
  var output = "255 - 400";
}
if(between(overallScore, 10, 250))  {
  var output = "10 - 250";
}

alert(output);

只要总体得分值在 10 到 990 范围内,此方法就可以正常工作,超出此范围的值将返回“10 - 250”范围。处理这个问题的最佳方法是什么?我想过使用 switch 语句,但我不知道如何做到这一点。我非常欢迎任何意见或帮助。

最佳答案

我实际上会使用一个包含您的范围的对象,然后创建一个简单的函数来检查它们。这样就更容易维护,更容易理解。

var ranges = [
  { min: 10, max: 250},
  { min: 255, max: 400},
  { min: 405, max: 600},
  { min: 605, max: 780},
  { min: 785, max: 900},
  { min: 905, max: 990}
];

function getScoreRange(score){
  var output = 'out of range'; //set to either empty or null or default value for out of range scores.
  ranges.forEach(function(range){
    if(score >= range.min && score <= range.max){
      output = range.min + ' - ' + range.max;
    }
  });
  return output;
};
alert(getScoreRange(960));

现在您可以轻松更改您的逻辑,添加新范围或更改它们而无需更改太多,您还可以将您的评分方法与其他范围重复使用并用于其他目的。

工作中的 JSFiddle: https://jsfiddle.net/workingClassHacker/c06pq2w0/3/

关于javascript - 如何处理超出范围的值? switch 还是 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40255612/

相关文章:

javascript - 未显示 Chrome 选项卡时设置间隔 'stacks'

javascript - 如何从该数组 Vue JS 显示 HTML

javascript - 使用 JavaScript 或 Dart 确定浏览器的默认文本突出显示颜色

java - 在 switch 语句中将值从一种情况传递到另一种情况

JavaScript/jQuery : possible to 'automate' switch statement through for loop?

C 代码,输入数字时显示 LED

javascript - 使用递归创建动态嵌套的 json 对象

javascript - 在 jquery 中搜索日期?

c# - Switch 语句字符串匹配但不起作用

c# - Resharper 能否将 case 语句格式化为与 case 本身在同一行开始?