我最后的排序功能不起作用。我想按升序对学生成绩进行排序,但无法打印出来。我的排序功能会通过并手动进行比较,但是无法正常工作。问题可能是学生班级正在使用什么来向数组添加值。
<html>
<body>
<script>
class Student {
constructor(name,grade) {
this.name = name;
this.grade = grade;
}
detail() {
document.writeln(this.name + " " + this.grade + "<br/>")
}
}
var grade = [];
var count = 0;
function setStudent() {
var name = prompt("Enter Name", "name");
while(name != '???') {
var grades= parseInt(prompt("Enter Grade", "Grade"));
var student = new Student(name,grades);
grade.push(student);
name = prompt("Enter Name", "name");
count++
}
}
function showGrades() {
for(i=0;i<count;i++) {
grade[i].detail();
}
}
function maxGrade() {
var mgrade = grade[0].grade;
var names = "";
for (i=0;i<count;i++) {
if(mgrade<grade[i].grade) {
mgrade=grade[i].grade;
names = grade[i].name
}
}
document.writeln("Max Grade: " + mgrade + " Name: " + names);
}
setStudent();
showGrades();
maxGrade();
document.writeln("<br/> Assorted List (Ascending): <br/>");
grade.sort(function(a,b) {
return a[0] - b[0] || a[1] - b[1];
});
console.log(grade);
</script>
</body>
</html>
答案 0 :(得分:0)
问题是这样的声明:
grade.sort(function(a,b) {
return a[0] - b[0] || a[1] - b[1];
});
a
和b
是学生对象。它显示在您的console.log
语句中。因此,a[0]
和b[0]
是未定义的。
我不确定a[1] - b[1]
指的是什么,但我认为您想要这样做:
grade.sort(function(a,b) {
return a.grade - b.grade;
});