按属性排序的 Javascript 对象数组不起作用

Javascript array of objects sort by property isn't working

本文关键字:对象 数组 不起作用 Javascript 属性 排序      更新时间:2023-09-26

我有一个 person 对象的数组,每个对象都有一个名称和一个 score 属性。我想按 person 对象的 score 属性对数组进行排序,然后显示数组。

我有一个显示排名的函数,我已经将排序代码添加到该函数的顶部,但它没有对数组进行排序,也没有抛出任何错误。任何想法出了什么问题?

javascript代码:

var rankings = [];
/* Player object constructor */
function Player(pname, score) { 
        this.pname = pname;
        this.score = score;
    }
/* function to add new players removed for clarity, it works */

/* sort and display the player objects by score */
function displayRankings () {
        rankings.sort( function(a, b) {
            return a[1] - b[1];
        });
        for (var i = 0; i < rankings.length; i++) {
            var li = document.createElement("li");
            var node = document.createTextNode(rankings[i].pname + ", " + rankings[i].score);
            li.appendChild(node);
            var element = document.getElementById("rankings");
            element.appendChild(li);
        }
    }

假设rankings是一个Person对象的数组,那么你需要访问score属性,而不是[1]

rankings.sort( function(a, b) {
    return a.score - b.score;
});