如何在JavaScript中对二维数组排序?

如何在JavaScript中对二维数组排序?,javascript,arrays,sorting,Javascript,Arrays,Sorting,我最后的排序功能不起作用。我想按升序对学生成绩进行排序,但无法打印出来。我的排序功能通过并手动比较,但我无法让它工作。问题可能是student类正被用来向数组添加值 <html> <body> <script> class Student { constructor(name,grade) { this.name = name; this.grade = grade; }

我最后的排序功能不起作用。我想按升序对学生成绩进行排序,但无法打印出来。我的排序功能通过并手动比较,但我无法让它工作。问题可能是student类正被用来向数组添加值

<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;
    });

当你说你不能让它工作时,它可能会重复你的意思是什么?它会抛出一个错误?它会对数据进行排序,但不是你想要的方式?