我有一个像这样的数组
var temp = [{"rank":3,"name":"Xan"},{"rank":1,"name":"Man"},{"rank":2,"name":"Han"}]
我正在尝试按如下方式对其进行排序
temp.sort(function(a){ a.rank})
但它没有工作。任何人都建议帮助。谢谢。
答案 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});