JavaScript获取数组的最大值最小值平均值

时间:2014-03-28 23:58:14

标签: javascript arrays math

我希望用户输入几个标记,最后我希望显示最高的平均值,其中有多少得到“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);

2 个答案:

答案 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关于您的代码的其他问题。