Javascript检查记录集中的最大/最小/平均数

时间:2010-11-23 20:04:15

标签: javascript

function lab09unknownLoopCountPart2() {

//Constants
var ONE_HUNDRED = 100;
var ZERO = 0;

//Variables
var employeeHourlyWage;
var hourlyMaximum = ZERO;
var hourlyMinimum = ZERO;
var totalHourlyWage = ZERO;
var records;
var counter = ZERO;
var average;

records = openEmployeePayrollRecords();

while (records.readNextRecord()) {
   employeeHourlyWage  = records.getEmployeeHourlyWage();
   totalHourlyWage += employeeHourlyWage;
   counter++;
   average = totalHourlyWage / counter;

   if (employeeHourlyWage < ONE_HUNDRED) {
       hourlyMaximum = employeeHourlyWage;
   }
   if (employeeHourlyWage < ONE_HUNDRED) {
       hourlyMinimum = employeeHourlyWage;
   }
}
document.write("Average Hourly Wage: " + average + "<br />");
document.write("Maximum Hourly Wage: "  + hourlyMaximum + "<br />");
document.write("Minimum Hourly Wage: " + hourlyMinimum + "<br />");

}

记录集只是15到30之间的数字。我必须对它们进行排序并找到最大值,最小值和平均值。

我知道我的两个IF语句不正确,我想知道如何使用Math.min和Math.max来检查没有

感谢。

3 个答案:

答案 0 :(得分:1)

   var hourlyMinimum = -1;
   var hourlyMaximum = -1;

   if (hourlyMaximum === -1 || employeeHourlyWage > hourlyMaximum ) {
       hourlyMaximum = employeeHourlyWage;
   }
   if (hourlyMinimum === -1 || employeeHourlyWage < hourlyMinimum ) {
       hourlyMinimum = employeeHourlyWage;
   }

假设工资不能为负。

答案 1 :(得分:0)

if (employeeHourlyWage > hourlyMaximum)
    hourlyMaximum = employeeHourlyWage;
if (employeeHourlyWage < hourlyMinimum)
    hourlyMinimum = employeeHourlyWage;

你也可以在循环之外移动平均计算,因为它只在外面使用它。

顺便说一句,使用那些ZERO和ONE_HUNDRED常量有什么意义 - 它们无论如何都不是语义上的。

答案 2 :(得分:0)

对于你的两个“if conditions”,你正在检查工资的新值是否大于最大值或最小值。

其中hourlyMaximum给出EmployeePayrollRecords集中每个EmployeeHourlyWage的最大值。

hourlyMinimum为EmployeePayrollRecords集中的每个EmployeeHourlyWage提供最小值。

因此,对于while循环中的每次迭代,您需要在if块中重新分配工资的值。

如果从记录中获得的当前工资大于当前最高工资,则以其他方式分配。最小化的类似过程。

当前的“if blocks”只会在每小时最低工资和最高工资低于100(ONE_HUNDRED)时重新分配其价值

为了向自己证明您确实获得了正确的值,请尝试通过代码和手动输出它们。