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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JavaScript中对二维数组进行排序?相关的知识,希望对你有一定的参考价值。

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

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

问题是此语句:

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

以上是关于如何在JavaScript中对二维数组进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中对存储xy坐标的二维数组进行排序?

如何按列值对二维数组进行排序?

如何在javascript中对多维数组进行排序

如何在javascript中对嵌套的对象数组进行排序?

如何在javascript中对字母数字数组进行排序[重复]

在Java中对二维字符串数组进行排序