在Array of Arrays-js上运行函数



我试图取三个学生的3个成绩的平均值(存储在一个数组中(,然后通过一个带有else-if语句的函数运行这些平均值,以检查平均成绩是a、B还是C。

我不想用else-if为每个学生的平均值创建一个单独的函数(所以我知道如何将其扩展到3个以上的输入(,而且我不知道如何在函数中索引averageGrades数组,以便我可以控制台.log averageGrades数组的每个元素(学生(,并让else-if语句评估该特定元素(学生。

我还尝试为每个学生制作一个averageGrade变量,这样averageGrades数组就只有一个值,而不是一个完整的方程,但会遇到同样的问题。

var studentGrades = [
[80, 90, 94],
[80, 90, 94],
[80, 90, 94]
]
var studentAvgerages = [
(studentGrades[0][0] + studentGrades[0][1] + studentGrades[0][2]) / 3,
(studentGrades[1][0] + studentGrades[1][1] + studentGrades[1][2]) / 3,
(studentGrades[2][0] + studentGrades[2][1] + studentGrades[2][2]) / 3
]
for (var i = 0; i <= studentAvgerages.length; i++) {
function evalGrades(studentAvgerages[i]) {
if (studentAvgerages[i] >= 90) {
return "A"
} else if ((studentAvgerages[i] >= 80) && (studentAvgerages[i] < 90)) {
return "B"
} else if ((studentAvgerages[i] >= 70) && (studentAvgerages[i] < 80)) {
return "C"
} else {
return "Failed"
}
}
}
console.log(evalGrades(studentAvgerages[0]))
console.log(evalGrades(studentAvgerages[1]))
console.log(evalGrades(studentAvgerages[2]))

我以为我知道你在找什么,现在不太确定了,但希望这能有所帮助?正如其他人所表明的那样,如果你想要的话,有一些俏皮话可以达到你的平均水平。

var studentGrades = [
[80, 90, 94],
[80, 90, 94],
[80, 90, 94]
]
for(var i=0; i < studentGrades.length; i++){
var avg = 0;
for(var j=0; j < studentGrades[i].length; j++){
avg += studentGrades[i][j];
}
avg = avg/studentGrades[i].length;
switch(true){
case (avg >= 90):
console.log("A");
break;
case (avg >= 80):
console.log("B");
break;
case (avg >= 70):
console.log("C");
break;
case (avg >= 60):
console.log("D");
break;
default:
"Failed";
break;
}
}

我更喜欢切换。。。很多时候都是这样的任务,但不要忘记考虑性能。在一个由20000组200个学生成绩组成的数组中,如果/否则可以保持页面速度,则可能值得使用。有关详细信息,请参阅此答案。

你可以采取提前退出的方法来获得分数。由于返回语句的原因,不需要else部分。

为了获得平均值,可以采用动态方法,添加值并除以数组的长度。

const
add = (a, b) => a + b,
getAverage = array => array.reduce(add, 0) / array.length,
evalGrades = grade => {
if (grade >= 90) return "A";
if (grade >= 80) return "B";
if (grade >= 70) return "C";
return "Failed";
},
studentGrades = [[80, 90, 94], [80, 70, 60], [76, 82, 91]],
studentAvgerages = studentGrades.map(getAverage);

console.log(...studentAvgerages);
console.log(...studentAvgerages.map(evalGrades));

如果你是编程或javascript的新手,请先练习一些基本的示例,并尝试了解代码的结构应该如何管理和重用。至少从基本上讲是函数式编程。

根据我从你的代码中了解到的,你需要一些可以动态计算学生成绩的东西。我重新编写了代码,希望能有所帮助。另外,试着自己调试代码,以便弄清楚代码是如何流动的。

var studentGrades = [
[80, 90, 94],
[80, 90, 94],
[80, 90, 94]
]
function evalGrades(grades) {
var sum = 0;
for(var i =0; i<grades.length; i++){
sum = sum + grades[i];
}
var avg = sum/grades.length;
if (avg >= 90) {
return "A"
} else if ((avg >= 80) && (avg < 90)) {
return "B"
} else if ((avg >= 70) && (avg < 80)) {
return "C"
} else {
return "Failed"
}
}
for (var i = 0; i < studentGrades.length; i++) {
console.log(evalGrades(studentGrades[i]))
}

试试这个。我希望我能帮上忙。

var studentGrades = [
[80, 90, 94],
[80, 90, 94],
[80, 90, 94]
]
for (var i = 0; i < studentGrades.length; i++) {
var average = studentGrades[i].reduce((a, b) => a + b, 0) / studentGrades[i].length;
if (average >= 90) { var result = "A" }
else if ( average >= 80 && average < 90 ) { var result = "B" }
else if ( average >= 70 && average < 80 ) { var result = "C" }
else { var result = "Failed" }
console.log(result);
}

最新更新