接受两个成绩数组的 JavaScript 函数

标签 javascript

这一直给我 TypeError: undefined is not an object (evaluating 'grades[2].length')。帮忙?

此代码的问题是:编写一个名为“比较”的 JavaScript 函数,该函数接受两个成绩数组,如果第一个学生的平均分较高,则返回“第一”;如果第二个学生的平均分较高,则返回“第二” .

function compare (grades)
{
  var sum1 = 0;
  var length1 = grades[1].length;
  for (i=0; i<grades[1].length; i++)
  {
    sum1 += grades[1];
    var avg1 = sum1/length1;
  }

  var sum2 = 0;
  var length2 = grades[2].length;
  for (var i=0; i<grades[2].length; i++)
  {
    sum2 += grades[2];
    var avg2 = sum2/length2;
  }

  if (avg1 > avg2)
  {
    return "first";
  }
  if (avg1 < avg2)
  {
    return "second";
  }
}

最佳答案

试试这个:

var array1 = [1,2,3,4,5];
var array2 = [1,2,3,4,7];

function compare(arr1 , arr2) {
    var aver1 = arr1.reduce(function(a, b) { return a + b; }, 0) / arr1.length;
    var aver2 = arr2.reduce(function(a, b) { return a + b; }, 0) / arr2.length;
    if(aver1 > aver2) {
        alert('First');
    } else if (aver1 < aver2) {
        alert('Second');
    }
}

compare(array1, array2);

注意:我假设您没有使用 IE <= 8

.reduce()是 Javascript 数组的内置函数。如果您单击上面的 MDN 文档链接,您将看到他们给出了如何对类似于上面使用的数组求和的示例。

关于接受两个成绩数组的 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26092906/

相关文章:

javascript - 决策树交互风格前端

javascript - Angular 指令动态模板不适用于绑定(bind)

javascript - angular ui router - 必须点击两次才能按预期更新 View (带演示)

javascript - Jssor slider 不会自动启动

javascript - 在javascript中对PCM音频缓冲区进行下采样

javascript - 下拉选项未反射(reflect)在 html 中

javascript - jQuery 切换父/子标签

javascript - 如何使用 Jquery 处理作为按钮实现的下拉菜单

javascript - Ajax POST 未刷新 View 中的数据

javascript - 每次使用 onClick 事件时如何防止变量返回原始值