目前,我正在按“排名”从最高到最低来排序数据列表。我想添加第二种排序,按里程排序,这是最近的(升序)。这个值将是a.Distance。
例如,我希望它像这样排序。
Ranking 8 Distance 1
Ranking 8 Distance 3
Ranking 7 Distance 3
Ranking 7 Distance 6
Ranking 5 Distance 2
Ranking 5 Distance 8
//Sort by rating
result.sort(function (a, b) {
if (b.Ranking > a.Ranking) {
return 1;
}
if (b.Ranking < a.Ranking) {
return -1;
}
return 0; // a must be equal to b
});发布于 2020-04-24 19:09:00
“第二个”排序条件只对第一个排序条件得到0的元素组有任何意义,这意味着它们的相对顺序并不重要。
这意味着您可以并且应该在已经拥有的相同的排序函数中实现这一点。第二类条件只是在第一种条件无法得出结论时才起作用。
let result = [
{ Ranking: 5, Distance: 8 },
{ Ranking: 8, Distance: 3 },
{ Ranking: 5, Distance: 2 },
{ Ranking: 7, Distance: 6 },
{ Ranking: 8, Distance: 1 },
{ Ranking: 7, Distance: 3 }
];
let output = result.sort(function(a, b) {
if (a.Ranking == b.Ranking) return a.Distance - b.Distance;
return b.Ranking - a.Ranking;
});
console.log(output);
https://stackoverflow.com/questions/61415628
复制相似问题