Как отсортировать двумерный массив в JavaScript? - PullRequest
0 голосов
/ 26 сентября 2019

Моя функция сортировки в конце не работает.Я хочу отсортировать оценки учеников по возрастанию, но не могу их распечатать.Моя функция сортировки проходит и сравнивает вручную, но я не могу заставить ее работать.Проблема может заключаться в том, что ученический класс используется для добавления значений в массив.

<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 голосов
/ 26 сентября 2019

Проблема заключается в следующем:

 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;
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...