1. 创建一个 toLetterGrade 函数,该函数采用百分比数组并返回相应成绩字母的数组。例如:
toLetterGrade([90,80,55,85]);//返回 ["A","A-","C","A"]
2. 创建一个 toGradePoints 函数,它接受一个字母等级数组并返回一个相应的成绩点数组。例如:
toGradePoints(["A","A-","C","A"]);//返回 [4.0,3.7,2.0,4.0]
3. 创建一个 GPA 函数,该函数采用百分比数组并返回相应的平均绩点。
我正在尝试做数字 1,这是我目前的代码,但它只给出了数组中最后一个数字的字母等级。我做错了什么?
var arr
function toLetterGrade(arr) {
for (i = 0; i < arr.length; i++) {
if (arr[i] >= 85) {
textG = "A";
} else if (arr[i] >= 80) {
textG = "A-";
} else if (arr[i] >= 75) {
textG = "B+";
} else if (arr[i] >= 70) {
textG = "B";
} else if (arr[i] >= 65) {
textG = "B-";
} else if (arr[i] >= 60) {
textG = "C+";
} else if (arr[i] >= 55) {
textG = "C";
} else if (arr[i] >= 50) {
textG = "D";
} else {
textG = "F";
}
}
return textG;
}
document.write(toLetterGrade([90, 80, 70]))
输出为B。
最佳答案
你在循环的每个循环中都覆盖了你的变量,这就是为什么你只得到一个 - 最后一个成绩。
我建议你使用一个空数组变量来存储结果。
在每个循环中,您都将为 textG
变量分配新的成绩,然后将其推送到 result
数组中。 textG
变量在每次循环 textG = ''
时都会重置,因此没有重复/覆盖结果的风险。
在 for
循环的所有循环之后,result
数组被返回。
function toLetterGrade(arr) {
var textG = '';
var result = [];
for (i = 0; i < arr.length; i++) {
textG = '';
if (arr[i] >= 85) {
textG = "A";
} else if (arr[i] >= 80) {
textG = "A-";
} else if (arr[i] >= 75) {
textG = "B+";
} else if (arr[i] >= 70) {
textG = "B";
} else if (arr[i] >= 65) {
textG = "B-";
} else if (arr[i] >= 60) {
textG = "C+";
} else if (arr[i] >= 55) {
textG = "C";
} else if (arr[i] >= 50) {
textG = "D";
} else {
textG = "F";
}
result.push(textG);
}
return result;
}
document.write(toLetterGrade([90, 80, 70]))
关于JavaScript:数字等级到字母等级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42492644/