如何在js中执行排序?

时间:2017-03-08 12:29:56

标签: javascript angularjs arrays sorting mean

我有一个像这样的数组

var temp = [{"rank":3,"name":"Xan"},{"rank":1,"name":"Man"},{"rank":2,"name":"Han"}]

我正在尝试按如下方式对其进行排序

 temp.sort(function(a){ a.rank})

但它没有工作。任何人都建议帮助。谢谢。

3 个答案:

答案 0 :(得分:6)

使用Array#sort,您还需要检查第二项,以获得对称值并返回值。

var temp = [{ rank: 3, name: "Xan" }, { rank: 1, name: "Man" }, { rank: 2, name: "Han" }];

temp.sort(function(a, b) {
    return a.rank - b.rank;
});

console.log(temp);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:2)

您必须在sort函数中对它们进行比较。如果函数返回负值,则a在b之前(按升序排列),如果为正,则b在a之前。如果返回值为0,则它​​们相等:

temp.sort(function(a, b) {
    if (a.rank < b.rank) {
        return -1;
    } else if (a.rank > b.rank) {
        return 1;
    } else {
        return 0;
    }
});

您可以使用减去数字的快捷方法来获得相同的结果:

temp.sort((a, b) {
    return a.rank - b.rank;
});

按降序排列:

temp.sort((a, b) {
    return b.rank - a.rank;
});

ES6快捷方式:

temp.sort((a, b) => b.rank - a.rank;

答案 2 :(得分:1)

 temp.sort(function(a, b) {return a.rank - b.rank});