簡體   English   中英

JavaScript 獲取數組的最大值最小值平均值

[英]JavaScript get max value min value average of an array

我希望用戶輸入一些標記,最后我想顯示最高最低平均值有多少人獲得了“A”、“B”、“C”、“D”、“F”

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);

Array.prototype.reduce允許你 折疊數組。

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之前,您正在使用mark來初始化markArr

此外, mark被讀取為字符串。

您應該重新排序您的語句,以便在使用它們之前初始化變量,並且您應該確保mark以數字值結束。

var mark = +prompt("Enter Student Mark: ", 50);

+提示強制轉換之前返回的字符串被prompt為數字。

您可以對數組進行排序並取第一個和最后一個值。 例如:

arr = [3, 5, 2, 14];
arr.sort(function(x, y){return x-y});
min = arr[0]; // 2
max = arr[arr.length - 1]; // 14

請注意,自定義比較函數是必需的,因為您需要數字排序而不是數字字符串表示的詞法排序。 (否則,“14”將比“2”“小”,這顯然不是您想要的方式。)

作為記錄,我同意 Mike Samuel 關於您代碼的其他問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM