首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按两个属性排序

按两个属性排序
EN

Stack Overflow用户
提问于 2020-04-24 19:02:36
回答 1查看 40关注 0票数 0

目前,我正在按“排名”从最高到最低来排序数据列表。我想添加第二种排序,按里程排序,这是最近的(升序)。这个值将是a.Distance。

例如,我希望它像这样排序。

代码语言:javascript
复制
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
            });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-24 19:09:00

“第二个”排序条件只对第一个排序条件得到0的元素组有任何意义,这意味着它们的相对顺序并不重要。

这意味着您可以并且应该在已经拥有的相同的排序函数中实现这一点。第二类条件只是在第一种条件无法得出结论时才起作用。

代码语言:javascript
复制
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);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61415628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档