首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何同时使用多个键对对象数组进行排序?

如何同时使用多个键对对象数组进行排序?
EN

Stack Overflow用户
提问于 2020-12-25 12:35:48
回答 1查看 66关注 0票数 0

我有一个对象数组,每个对象都有nameskilltalent键。看起来是这样的:

代码语言:javascript
运行
复制
 let defaultArray = [
  {name='person1', skill = 6, talent = 3},
  {name='person2', skill = 5, talent = 5},
  {name='person3', skill = 4, talent = 6},
  {name='person4', skill = 2, talent = 7},
  {name='person5', skill = 1, talent = 4},
  {name='person6', skill = 3, talent = 1},
  {name='person7', skill = 6, talent = 2}
]

我需要对其进行排序,这样我才能根据他们的技能来定义三位最优秀的人,如下所示:

代码语言:javascript
运行
复制
let resultArray = [
  {name='person1', skill = 6, talent = 3},
  {name='person7', skill = 6, talent = 2},
  {name='person2', skill = 5, talent = 5},
]

正如您所看到的,如果某人的技能是相同的(比如person1defaultArray中的person7 ),那么人员将按talent进行排序。

请有人帮我做一个简洁的函数,把defaultArray作为参数,并返回resultArray,同时考虑到skilltalent值可以完全随机?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-25 12:44:04

代码语言:javascript
运行
复制
const arr = [
    {name:'person1', skill : 6, talent : 3},
    {name:'person2', skill : 5, talent : 5},
    {name:'person3', skill : 4, talent : 6},
    {name:'person4', skill : 2, talent : 7},
    {name:'person5', skill : 1, talent : 4},
    {name:'person6', skill : 3, talent : 1},
    {name:'person7', skill : 6, talent : 2}
  ];
  

arr.sort((a, b) => (b.skill - a.skill) || (b.talent - a.talent));
console.log(arr)
代码语言:javascript
运行
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

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

https://stackoverflow.com/questions/65448117

复制
相关文章

相似问题

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