javascript - 将分数转换为等级更简单。有没有更简单的方法来编写以下代码?

标签 javascript

编写所有 else if 语句有点乏味。有没有更简单的方法来编写以下代码?

function convertScoreToGradeWithPlusAndMinus(score) {
  // your code here
  if(score <= 100 && score >= 98) return "A+";
  else if(score <= 97 && score >= 93) return "A";
  else if(score <= 92 && score >= 90) return "A-";
  else if(score <= 89 && score >= 88) return "B+";
  else if(score <= 87 && score >= 83) return "B";
  else if(score <= 82 && score >= 80) return "B-";
  else if(score <= 79 && score >= 78) return "C+";
  else if(score <= 77 && score >= 73) return "C";
  else if(score <= 72 && score >= 70) return "C-";
  else if(score <= 69 && score >= 68) return "D+";
  else if(score <= 67 && score >= 63) return "D";
  else if(score <= 62 && score >= 60) return "D-";
  else if(score <= 59 && score >= 0) return "F";
  else return "INVALID SCORE";
}

var output = convertScoreToGradeWithPlusAndMinus(91);
console.log(output); // --> 'A-'

最佳答案

较短的代码并不总是更好的代码。您可以使用 ascii 和一些数学技巧编写此代码的非常简短的版本。但以后其他人将无法读取它。我认为可读性性能是需要考虑的两个最重要的事情。

var limits = ['-','','+','+']
function convertScoreToGradeWithPlusAndMinus(score) {
  if(score==100) return 'A+';
  if(score<59) return 'F';
  
  var lCode = 74 - Math.floor(score/10);
  var sign = limits[Math.floor((score % 10)/3)]
  return String.fromCharCode(lCode)+ sign;
}
score : <input id="scoreBox" type="text"/>

<input onclick="alert(convertScoreToGradeWithPlusAndMinus(scoreBox.value))" value="calculate" type="button"/>

关于javascript - 将分数转换为等级更简单。有没有更简单的方法来编写以下代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41494680/

相关文章:

javascript - 如何使用 html、css 和 javascript 制作卡片 slider

javascript - 查找应用了 jquery 插件的所有对象

javascript - Enter 键在单击按钮时不起作用

javascript - 单击更改参数 'top' 的 JS 代码

javascript - react 提到文本区域不随文本增长

javascript - 数组对象不使用点表示法或方括号表示法进行更新

javascript - 我如何使用正则表达式验证 javascript 中的 url

javascript - import 不能在 chrome 61 中使用?

javascript - 使用 arangodb 连接到多个数据库

javascript - 禁用 md-tab 中的 Md-(上一个/下一个)按钮