为什么这个对象数组的排序失败了?

时间:2012-02-03 15:20:56

标签: javascript

我正在尝试按score值对此对象进行排序,以便我可以填充一个highscores表。找到这种排序方法,它可以在公式中使用-从最小到最高排序,但是当我尝试用+反转它时,它不起作用。我很困惑..

JS:

scores = [
        {"n":"Arne", "score":700},
        {"n":"Bertil", "score":430},
        {"n":"Carl", "score":901},
        {"n":"David", "score":30},
        {"n":"Eric", "score":23},
        {"n":"Frida", "score":118},
        {"n":"Greg", "score":221},
        {"n":"Hulk", "score":543}
        ];

scores.sort(function(a, b) {
return a.score + b.score;
});

//add rows to table from scores object
var t = document.getElementById('table');
for (var j in scores) {

        var r = document.createElement('tr')
        r.innerHTML = '<td><span></span></td><td>'+scores[j].n+'</td><td>'+scores[j].s+'</td>'
        t.appendChild(r);
}

3 个答案:

答案 0 :(得分:3)

你提到你试图扭转最初涉及减法的排序。

因此,我认为假设您的原始类型是这样的,这是公平的......

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

如果要按相反方向排序,只需颠倒减法的顺序:

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

答案 1 :(得分:0)

您的排序功能应该返回positive , 0 , or negative values

你可能试图在那里添加一些错误的数字。

试试这里:

http://jsbin.com/icojaz/edit#javascript,html

按分数排序。

答案 2 :(得分:-1)

根据http://www.w3schools.com/jsref/jsref_sort.asp,您可以看到您只需反转输入参数,如下所示:return a.score - b.score;