1。创建一个函数toLetterGrade,它接受一个百分比数组并返回一个对应成绩字母的数组。例如:
toLetterGrade([90,80,55,85]); //returns ["A","A-","C","A"]
2. 创建一个函数toGradePoints,它接受一系列字母等级并返回相应的成绩点数组。例如:
toGradePoints(["A","A-","C","A"]); //returns [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。
答案 0 :(得分:1)
你在循环的每个循环中覆盖你的变量,这就是为什么你只得到一个 - 最后一个等级。
我建议你使用一个空数组变量来存储结果。
对于每个循环,您将为<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
<script src="https://code.jquery.com/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
</head>
<body>
<ul class="nav nav-tabs">
<li><a href="#home" data-toggle="tab">Home</a></li>
<li><a href="#profile" data-toggle="tab">Profile</a></li>
<li><a href="#messages" data-toggle="tab">Messages</a></li>
<li><a href="#settings" data-toggle="tab">Settings</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="home">This is Home</div>
<div class="tab-pane" id="profile">This is Profile</div>
<div class="tab-pane" id="messages">This is Messages</div>
<div class="tab-pane" id="settings">This is Settings</div>
</div>
<div id="newHome" class='new'>
Want to print home content here
</div>
<div id="newProfile" class='new'>
Want to print profile content here
</div>
<div id="newMessages" class='new'>
Want to print messages content here
</div>
<div id="Settings" class='new'>
Want to print settings content here
</div>
</body>
</html>
变量分配新等级,然后将其推入textG
数组。每个循环result
都会重置textG
变量,因此不存在复制/覆盖结果的风险。
在textG = ''
循环的所有循环之后,返回for
数组。
result
答案 1 :(得分:0)
您将等级分配给变量,然后在每次迭代时覆盖它。
尝试使用textG.push('A')代替
答案 2 :(得分:0)
每次迭代都会覆盖你的返回值。
尝试创建一个数组,并将解决方案添加到数组中。
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]))
var solutionArr = [];
答案 3 :(得分:0)
对于第一部分,您可以使用一个对象并迭代所需等级的键。
function getGrade(p) {
var grade = 'F';
Object.keys(grades).some(function (k) {
if (p >= grades[k]) {
grade = k;
return true;
}
});
return grade
}
var grades = { A: 85, 'A-': 80, B: 70, 'B-': 65, 'C+': 60, C: 55, D: 50, F: '' }
console.log([90, 80, 55, 85].map(getGrade));
.as-console-wrapper { max-height: 100% !important; top: 0; }