2014-03-28 81 views
-1

我希望用户输入几个标记,最后我想显示最高的最低平均数有多少个“A”,“B”,“C ”, “d”, “F”JavaScript获取数组的最大值最小值平均值

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

以供将来参考,Java的!= JavaScript的 –

+0

http://jsfiddle.net/adeneo/Gqn6r/ – adeneo

+0

什么是你的问题?你不喜欢你的代码? – Phrogz

回答

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阅读mark之前初始化markArr

另外,mark被读为字符串。

您应该对您的语句重新排序,以便在使用它们之前对变量进行初始化,并且您应该确保mark以数字值结尾。

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

提示之前的+胁迫通过prompt返回到数字的字符串。

+0

这意味着什么? – HelloWorld

+2

请注意,虽然功能优雅,但通过三次遍历数组计算最小/最大/平均值并不理想。此外,'Math.max.apply(ary)'比'ary.reduce(Math.max,-Infinity)更优雅和高效' – Phrogz

+1

@Progrog,我同意re效率,但我不同意重新理想。这是一个课堂练习,所以清晰度很重要,即使有“标记”,交互式程序中的效率也不会太高。长度“是世界上最大的本科班的规模。如果你想要非常高效,那么在收到数据时要保持运行总数,以便在等待用户输入时充分利用空闲时间,而不是批量执行任何操作,并且避免函数调用开销。 –

0

您可以对数组进行排序并取第一个和最后一个值。例如:

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在您的代码的其他问题。

+0

排序以查找最小/最大是有趣的,但效率不高。现在,如果中位数也是需要的...... – Phrogz

相关问题