这一直给我 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/