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