如何基于指定分值对数组排序 提取游戏排行榜前10名用户数据
实现方案
核心逻辑
你可以组合使用JS数组的sort()排序方法和slice()截取方法实现需求:
- 用
sort()传入自定义比较函数实现按分数降序排列(分数高的排在前面,符合排行榜逻辑) - 用
slice(0,10)截取排序后的前10条,数组长度不足10时会自动返回全部有效数据,无需额外判断长度
示例代码(适配你给出的测试数组)
// 原始测试数据 const userList = [ { name: "user1", image: "image", score: 10 }, { name: "user2", image: "image", score: 167 }, { name: "user3", image: "image", score: 1 }, { name: "user4", image: "image", score: 102 }, { name: "user5", image: "image", score: 12 } ] // 排序+取前10的核心代码 const top10Users = userList .sort((a, b) => b.score - a.score) .slice(0, 10) console.log(top10Users)
适配正式数据库字段版本
如果你的正式数据库字段为UserName/UserImage/UserScore,修改比较函数的对应字段即可:
const top10Users = 数据库返回的用户数组 .sort((a, b) => b.UserScore - a.UserScore) .slice(0, 10)
运行效果说明
用你给出的测试数据运行后,返回的排序结果会按分数从高到低排列:
- user2(167分)
- user4(102分)
- user5(12分)
- user1(10分)
- user3(1分)
总数据量不足10条时会全部返回,超过10条时自动只保留前10名。
内容的提问来源于stack exchange,提问作者A47
相关产品推荐
相关产品推荐

