我希望用户输入几个标记,最后我希望显示最高的平均值,其中有多少得到“A”,“B”,“C”,“D”,“F”< / p>
var highestMark=0;
var gradeAwarded;
var StudentArr= [Student];
var markArr = [mark];
var Student = prompt("Enter Student Name: ", "Name");
var mark = prompt("Enter Student Mark: ", 50);
var max = Math.max.apply(markArr); /* This about equal to Math.max(numbers[0], ...) or Math.max(5, 6, ..) */
var min = Math.min.apply(markArr);
if (mark < 0 || mark > 100) {
alert("Grate out of bounds");
} else if (mark >= 83) {
gradeAwarded = "A";
} else if (mark >= 70) {
gradeAwarded = "B";
} else if (mark >= 50) {
gradeAwarded = "C";
} else if (mark >= 0) {
gradeAwarded = "F";
}
document.write(min);
答案 0 :(得分:0)
Array.prototype.reduce
允许您fold通过数组。
var min = markArr.reduce(
function (a,b) { return Math.min(a, b); },
Infinity);
var max = markArr.reduce(
function (a,b) { return Math.max(a, b); },
-Infinity);
var mean = markArr.reduce(function (a, b) { return a + b; }, 0)
/ markArr.length;
您的代码存在许多问题。
var markArr = [mark];
var Student = prompt("Enter Student Name: ", "Name");
var mark = prompt("Enter Student Mark: ", 50);
在阅读mark
之前,您正在使用markArr
初始化mark
。
此外,mark
被读作字符串。
您应该重新排序语句,以便在使用它们之前初始化变量
应确保mark
最终为数字值。
var mark = +prompt("Enter Student Mark: ", 50);
提示前+
将prompt
返回的字符串强制转换为数字。
答案 1 :(得分:0)
您可以对数组进行排序并获取第一个和最后一个值。例如:
arr = [3, 5, 2, 14];
arr.sort(function(x, y){return x-y});
min = arr[0]; // 2
max = arr[arr.length - 1]; // 14
请注意,自定义比较函数是必需的,因为您需要数字排序而不是数字的字符串表示的词法排序。 (否则,&#34; 14&#34;会比&#34; 2&#34;更小,这显然不是你想要的方式。)
为了记录,我同意Mike Samuel关于您的代码的其他问题。