JavaScript排名排行榜[关闭]

Posted

技术标签:

【中文标题】JavaScript排名排行榜[关闭]【英文标题】:JavaScript Rank Leaderboard [closed] 【发布时间】:2021-09-21 14:48:04 【问题描述】:
[
  [ 'UserA', 490 ],
  [ 'UserC', 175 ],
  [ 'UserD', 67 ],
  [ 'UserB', 26 ]
]

如何根据排行榜给他们排名?例如。 UserA 排名第一,UserC 排名第二,以此类推。

它看起来像这样:

UserA: Rank 1
UserC: Rank 2
UserD: Rank 3
UserB: Rank 4

【问题讨论】:

只使用arr.sort(),他们使用mapindex + 1 欢迎来到 Stack Overflow!访问help center,使用tour 了解内容和How to Ask。请首先>>>Search for related topics on SO,如果您遇到困难,请发布您的尝试的minimal reproducible example,并使用[<>] 记录输入和预期输出sn-p 编辑器。 这将是一个更合乎逻辑的对象: 'UserA': 490, 'UserC': 175, 'UserD': 67 , 'UserB': 26 如果您添加类似以下内容将不胜感激:“到目前为止,这是我的代码,我被困在这个**和这个* - 我还搜索了这个资源和试过这个和这个。”*。创建一个minimal reproducible example 你的最佳尝试。 【参考方案1】:

使用一个对象并使用排序函数对其进行排序

const results = 
  'UserA':  points: 490 ,
  'UserB':  points: 26  ,
  'UserC':  points: 175 ,
  'UserD':  points: 67  

const rank = Object.entries(results)
  .sort(([, a], [, b]) => b.points - a.points)
  .map((item, i) => 
    results[item[0]].rank = (i + 1)
    console.log(item[0], results[item[0]].rank)
    return `$item[0]'s Rank: $i+1`
  )
console.log(results)

const findUserRank = user => rank.filter(entry => entry.includes(user))
const getUserRankOnly = user => results[user].rank
const getRankUser = ranking => Object.entries(results).filter(([key,val]) => val.rank===ranking).map(([key]) => key)


console.log("Users containing 'User':", findUserRank('User').join("\n"))
console.log("User with rank #3", getRankUser(3)[0])
console.log("UserC's rank:", getUserRankOnly('UserC'))

与您的嵌套数组相同

const results = [
  [ 'UserA', 490 ],
  [ 'UserC', 175 ],
  [ 'UserD', 67 ],
  [ 'UserB', 26 ]
];
const rank = results.slice(0)
  .sort(([, a], [, b]) => b - a)
  .map((item,i) => `$item[0]'s Rank: $i+1`);

const getUserRank     = user => rank.filter(entry => entry.includes(user))
const getUserRankOnly = user => rank.filter(entry => entry.includes(user))[0].split(": ")[1]
const getRankUser     = ranking => rank.filter(entry => entry.endsWith(ranking))[0].split("'")[0]


console.log("Users containing 'User':",getUserRank('User').join("\n"))
console.log("Users containing 'UserC':",getUserRank('UserC')[0])
console.log("User with rank #3",getRankUser('3'))
console.log("UserC's rank:",getUserRankOnly('UserC')[0])

【讨论】:

不完全像我想要的那样。所以我很难弄清楚如何将它们显示为数字排名(我已经对它们进行了排序)。同样,它看起来像这样作为示例:``` UserA's Rank: 1 UserB's Rank: 4 etc ``` 太棒了!谢谢。 哦,是的,我也忘了一件事。如何仅从用户名中获取特定排名?例如。我想获取 UserA,它会显示排名数字。 你看到@ReinhardtG 的更新了吗?

以上是关于JavaScript排名排行榜[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

9 月编程语言排行榜:Python 霸榜 , Kotlin 排名上升最快

次哦~ 谁曾想TypeScript竟然超C++,成为排名第四的变成语言!

Kotlin和Swift语言在Redmonk榜上排名大幅提升

Python天下第一!综合热度增长速度工作需求都是榜首|IEEE Spectrum年度排行...

2021Q1 编程语言排行榜:JavaScript 开发者最多,Rust 增长速度最快

google play 游戏是不是支持排名匹配和排行榜?