当一个或多个值相同时,按两个属性对级别数据进行排序

问题描述

我在 discord.js 机器人上按排行榜命令的两个参数对数据进行排序时遇到了一些问题。我目前拥有它,其中用户按级别排序。 唯一的问题是当有两个相同级别的用户时,需要按照拥有最多 XP 的人进行排序:

示例:
用户 1:Lvl 20; 50/200XP
用户2:Lvl 20; 80/200XP
User2 应该出现在 User 1 之前

我一直在尝试找到的各种解决方案,但都没有解决问题,非常感谢您对此的任何帮助,谢谢!

存储在此处的等级数据和 XP 数据:

  let level = db.all().filter(data => data.ID.startsWith(`guild_646074330249429012_level`)).sort((a,b) => b.data - a.data)


  let userXP = db.all().filter(data => data.ID.startsWith(`guild_646074330249429012_xp`)).sort((a,b) => b.data - a.data)

解决方法

试试这个:

leaderboard.sort((b,a) => ((a.rank+1)*(a.xp)) - (Math.pow((b.rank+1),10)*(b.xp)))
//replace leaderboard with whatever array has all the ranks and xps
//also,idk how to get rank and xp from your code so I just did .rank and .xp

这样,您可以一次性对所有内容进行排序