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

Javascript 将分数转换为分数更简单。有没有更简单的方法来编写以下代码?,javascript,Javascript,写所有其他if语句有点乏味。有没有更简单的方法来编写以下代码 函数转换ScoreToGradeWithplus和减号(分数){ //你的代码在这里 如果(分数=98)返回“A+”; 否则,如果(分数=93)返回“A”; 否则,如果(分数=90)返回“A-”; 否则,如果(分数=88)返回“B+”; 否则,如果(得分=83)返回“B”; 否则,如果(分数=80)返回“B-”; 否则,如果(分数=78)返回“C+”; 否则,如果(分数=73)返回“C”; 否则,如果(分数=70)返回“C-”; 否

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

函数转换ScoreToGradeWithplus和减号(分数){
//你的代码在这里
如果(分数=98)返回“A+”;
否则,如果(分数=93)返回“A”;
否则,如果(分数=90)返回“A-”;
否则,如果(分数=88)返回“B+”;
否则,如果(得分=83)返回“B”;
否则,如果(分数=80)返回“B-”;
否则,如果(分数=78)返回“C+”;
否则,如果(分数=73)返回“C”;
否则,如果(分数=70)返回“C-”;
否则,如果(分数=68)返回“D+”;
否则,如果(分数=63)返回“D”;
否则,如果(分数=60)返回“D-”;
否则如果(分数=0)返回“F”;
否则返回“无效分数”;
}
var输出=convertScoreToGradeWithPlusAndMinus(91);

console.log(输出);//-->因此首先要注意的是,如果条件为“true”,则函数返回。所以“如果”可以用简单的“如果”来代替。。。另一件事是,由于您的范围是连续的,您实际上不需要每次都测试最大值和最小值:

function convertScoreToGradeWithPlusAndMinus(score) {
  if(score > 100 || score < 0) return "INVALID SCORE";
  if(score >= 98) return "A+";
  if(score >= 93) return "A";
  if(score >= 90) return "A-";
  if(score >= 88) return "B+";
  if(score >= 83) return "B";
  if(score >= 80) return "B-";
  if(score >= 78) return "C+";
  if(score >= 73) return "C";
  if(score >= 70) return "C-";
  if(score >= 68) return "D+";
  if(score >= 63) return "D";
  if(score >= 60) return "D-";
  return "F";
}

var output = convertScoreToGradeWithPlusAndMinus(91);
console.log(output); // --> 'A-'
函数转换ScoreToGradeWithplus和减号(分数){
如果(分数>100 | |分数<0)返回“无效分数”;
如果(得分>=98)返回“A+”;
如果(得分>=93)返回“A”;
如果(得分>=90)返回“A-”;
如果(得分>=88)返回“B+”;
如果(得分>=83)返回“B”;
如果(得分>=80)返回“B-”;
如果(得分>=78)返回“C+”;
如果(得分>=73)返回“C”;
如果(分数>=70)返回“C-”;
如果(分数>=68)返回“D+”;
如果(得分>=63)返回“D”;
如果(得分>=60)返回“D-”;
返回“F”;
}
var输出=convertScoreToGradeWithPlusAndMinus(91);
console.log(输出);//-->A-'
我不知道你是否认为这没那么乏味?就我个人而言,我的首选方法是将限制映射到值,然后结束简单的循环,直到找到正确的值

function convertScoreToGradeWithPlusAndMinus(score) {
    if(score > 100 || score < 0) return "INVALID SCORE";
    var map = [
        {max: 98, grade: "A+"},
        {max: 93, grade: "A"},
        {max: 90, grade: "A-"},
        {max: 88, grade: "B+"},
        {max: 83, grade: "B"},
        {max: 80, grade: "B-"},
        {max: 78, grade: "C+"},
        {max: 73, grade: "C"},
        {max: 70, grade: "C-"},
        {max: 68, grade: "D+"},
        {max: 63, grade: "D"},
        {max: 60, grade: "D-"}
    ];
    for(var loop = 0; loop < map.length; loop++) {
        var data = map[loop];
        if(score >= data.max) return data.grade;
    }
    return "F";
}
函数转换ScoreToGradeWithplus和减号(分数){
如果(分数>100 | |分数<0)返回“无效分数”;
变量映射=[
{最高成绩:98,成绩:“A+”},
{max:93,成绩为“A”},
{最高成绩:90,成绩:“A-”},
{max:88,年级:“B+”},
{max:83,成绩为“B”},
{最高:80,等级:“B-”},
{最高:78,等级:“C+”},
{最高:73,等级:“C”},
{最高:70,等级:“C-”},
{最高:68,年级:“D+”},
{最高:63,年级:“D”},
{最高:60,年级:“D-”}
];
for(var loop=0;loop=data.max)返回data.grade;
}
返回“F”;
}
不过,定义地图仍然是一项繁琐的工作——我认为在这种情况下,你无法避免它


希望这有帮助

首先要注意的是,如果条件为“true”,则函数返回。所以“如果”可以用简单的“如果”来代替。。。另一件事是,由于您的范围是连续的,您实际上不需要每次都测试最大值和最小值:

function convertScoreToGradeWithPlusAndMinus(score) {
  if(score > 100 || score < 0) return "INVALID SCORE";
  if(score >= 98) return "A+";
  if(score >= 93) return "A";
  if(score >= 90) return "A-";
  if(score >= 88) return "B+";
  if(score >= 83) return "B";
  if(score >= 80) return "B-";
  if(score >= 78) return "C+";
  if(score >= 73) return "C";
  if(score >= 70) return "C-";
  if(score >= 68) return "D+";
  if(score >= 63) return "D";
  if(score >= 60) return "D-";
  return "F";
}

var output = convertScoreToGradeWithPlusAndMinus(91);
console.log(output); // --> 'A-'
函数转换ScoreToGradeWithplus和减号(分数){
如果(分数>100 | |分数<0)返回“无效分数”;
如果(得分>=98)返回“A+”;
如果(得分>=93)返回“A”;
如果(得分>=90)返回“A-”;
如果(得分>=88)返回“B+”;
如果(得分>=83)返回“B”;
如果(得分>=80)返回“B-”;
如果(得分>=78)返回“C+”;
如果(得分>=73)返回“C”;
如果(分数>=70)返回“C-”;
如果(分数>=68)返回“D+”;
如果(得分>=63)返回“D”;
如果(得分>=60)返回“D-”;
返回“F”;
}
var输出=convertScoreToGradeWithPlusAndMinus(91);
console.log(输出);//-->A-'
我不知道你是否认为这没那么乏味?就我个人而言,我的首选方法是将限制映射到值,然后结束简单的循环,直到找到正确的值

function convertScoreToGradeWithPlusAndMinus(score) {
    if(score > 100 || score < 0) return "INVALID SCORE";
    var map = [
        {max: 98, grade: "A+"},
        {max: 93, grade: "A"},
        {max: 90, grade: "A-"},
        {max: 88, grade: "B+"},
        {max: 83, grade: "B"},
        {max: 80, grade: "B-"},
        {max: 78, grade: "C+"},
        {max: 73, grade: "C"},
        {max: 70, grade: "C-"},
        {max: 68, grade: "D+"},
        {max: 63, grade: "D"},
        {max: 60, grade: "D-"}
    ];
    for(var loop = 0; loop < map.length; loop++) {
        var data = map[loop];
        if(score >= data.max) return data.grade;
    }
    return "F";
}
函数转换ScoreToGradeWithplus和减号(分数){
如果(分数>100 | |分数<0)返回“无效分数”;
变量映射=[
{最高成绩:98,成绩:“A+”},
{max:93,成绩为“A”},
{最高成绩:90,成绩:“A-”},
{max:88,年级:“B+”},
{max:83,成绩为“B”},
{最高:80,等级:“B-”},
{最高:78,等级:“C+”},
{最高:73,等级:“C”},
{最高:70,等级:“C-”},
{最高:68,年级:“D+”},
{最高:63,年级:“D”},
{最高:60,年级:“D-”}
];
for(var loop=0;loop=data.max)返回data.grade;
}
返回“F”;
}
不过,定义地图仍然是一项繁琐的工作——我认为在这种情况下,你无法避免它


希望这有帮助

短代码并不总是好代码。您可以使用ascii和一些数学技巧编写此代码的非常简短的版本。但其他人稍后将无法阅读。我认为<强> > Reababys和性能是最重要的两件事。
var limits=['-',''+','+']
函数转换ScoreToGradeWithPlusandMinus(分数){
如果(分数=100)返回“A+”;

如果(Sqp

短代码不是总是更好的代码),您可以使用ASCII和一些数学技巧编写一个很短的代码版本,但是以后它将不可读。我认为Reababys和<强>性能是最重要的两件事。

var limits=['-',''+','+']
函数转换ScoreToGradeWithPlusandMinus(分数){
如果(分数=100)返回“A+”;

if(score刚才回答了,但我也遇到了这个问题。我认为下面提供了另外两个答案之间的一个很好的折衷方法:

function convertScoreToGradeWithPlusAndMinus(score) {
  if (score > 100 || score < 0) return "INVALID SCORE";
// sign logic
  let sign = "";
  if (score % 10 < 3) sign = "-";
  if (score % 10 > 7 || score === 100) sign = "+";
// letter logic
  if (score < 60) return "F";
  if (score < 70) return "D" + sign;
  if (score < 80) return "C" + sign;
  if (score < 90) return "B" + sign;
  return "A" + sign;
函数转换ScoreToGradeWithplus和减号(分数){
如果(分数>100 | |分数<0)返回“无效分数”;
//符号逻辑
让我们签名“”;
如果(分数%10<3)符号为“-”;
如果(分数%10>7 | |分数===100)符号=“+”;
//字母逻辑
如果(分数<60)返回“F”;
如果(分数<70)返回“D”+符号;
如果(分数<80)返回“C”+符号;
如果(分数<90)重新计算