我有一个包含对象名称和标记的对象数组。像下面
如何计算每个学生的“平均”分数并比较“平均”分数以获得最高的学生。我不想使用ES6
var Students = [{
name: "Bob",
marks: [78, 80, 89, 90, 68]
},
{
name: "Alin",
marks: [87, 60, 59, 70, 68]
},
{
name: "bikash",
marks: [82, 60, 79, 60, 80]
}
];
var average;
var newArray = [];
for (let i = 0; i < Students.length; i++) {
var marks = Students[i]["marks"];
var total = 0;
console.log(marks);
for (var j = 0; j < marks.length; j++) {
total += marks[j];
}
average = total / marks.length;
newArray.push(average)
var msg = Students[i]["name"] + " has average mark: " + average;
console.log(msg)
}
console.log(newArray)
我想在对象中插入平均值以及名称,例如[{name:“ Bob”,平均值:89.4},{name:“ Alin”,平均值:87.2},{name:“ Bikash”,平均值:89.4 }然后对对象进行排序。
最后,我想要console.log,因为Bob是成绩最好的学生,或者Alin和Bob是成绩最好的学生(如果他们的平均数相同)
不要将平均值推入新数组,将其添加为Students[i]
with的属性Students[i].average = average;
。
然后,您可以使用该属性对数组进行排序,并从排序后的数组中将其打印给学生。
var Students = [{
name: "Bob",
marks: [78, 80, 89, 90, 68]
},
{
name: "Alin",
marks: [87, 60, 59, 70, 68]
},
{
name: "bikash",
marks: [82, 60, 79, 60, 80]
}
];
var average;
for (let i = 0; i < Students.length; i++) {
var marks = Students[i]["marks"];
var total = 0;
for (var j = 0; j < marks.length; j++) {
total += marks[j];
}
average = total / marks.length;
Students[i].average = average;
var msg = Students[i]["name"] + " has average mark: " + average;
console.log(msg)
}
Students.sort((s1, s2) => s2.average - s1.average);
var topAvg = Students[0].average;
var topStudents = Students.filter(s => s.average == topAvg).map(s => s.name).join(", ");
console.log(`Top Students are ${topStudents} with mark ${topAvg}`);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句