如何在JavaScript中对二维数组排序?
我最后的排序功能不起作用。我想按升序对学生成绩进行排序,但无法打印出来。我的排序功能通过并手动比较,但我无法让它工作。问题可能是student类正被用来向数组添加值如何在JavaScript中对二维数组排序?,javascript,arrays,sorting,Javascript,Arrays,Sorting,我最后的排序功能不起作用。我想按升序对学生成绩进行排序,但无法打印出来。我的排序功能通过并手动比较,但我无法让它工作。问题可能是student类正被用来向数组添加值 <html> <body> <script> class Student { constructor(name,grade) { this.name = name; this.grade = grade; }
<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>
班级学生{
建造师(姓名、级别){
this.name=名称;
这个。等级=等级;
}
细节(){
document.writeln(this.name+“”+this.grade+“
”)
}
}
var等级=[];
var计数=0;
函数setStudent(){
变量名称=提示(“输入名称”、“名称”);
而(名称!=“???”){
var grades=parseInt(提示(“输入等级”、“等级”));
var学生=新学生(姓名、年级);
成绩。推(学生);
名称=提示(“输入名称”、“名称”);
计数++
}
}
函数showGrades(){
对于(i=0;i而言,问题在于以下陈述:
grade.sort(function(a,b) {
return a[0] - b[0] || a[1] - b[1];
});
a
和b
是学生对象。它显示在您的控制台.log
语句中。因此,a[0]
和b[0]
是未定义的
我不确定a[1]-b[1]
指的是什么,但我认为您希望:
grade.sort(function(a,b) {
return a.grade - b.grade;
});
当你说你不能让它工作时,它可能会重复你的意思是什么?它会抛出一个错误?它会对数据进行排序,但不是你想要的方式?