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

时间:2019-09-26 17:26:21

标签: javascript arrays sorting

我最后的排序功能不起作用。我想按升序对学生成绩进行排序,但无法打印出来。我的排序功能会通过并手动进行比较,但是无法正常工作。问题可能是学生班级正在使用什么来向数组添加值。

<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>

1 个答案:

答案 0 :(得分:0)

问题是这样的声明:

 grade.sort(function(a,b) {
        return a[0] - b[0] || a[1] - b[1];
    });

ab是学生对象。它显示在您的console.log语句中。因此,a[0]b[0]是未定义的。

我不确定a[1] - b[1]指的是什么,但我认为您想要这样做:

grade.sort(function(a,b) {
        return a.grade - b.grade;
    });
相关问题