讲师中心 微信公众号
AI工具推荐 视频效率加速

如何按经验值(XP)降序排序用户数组

阿明君_3608

阿明君_3608

发布时间:2026-01-05 17:04:02

|

310人浏览过

|

来源于php中文网

原创

如何按经验值(XP)降序排序用户数组

本文介绍如何使用 javascript 的 `tosorted()` 方法对包含用户对象的数组按 xp 值进行高效、安全的降序排序,并兼容旧版运行环境。

在开发排行榜、积分墙或用户动态列表时,常需将用户按经验值(XP)从高到低排序。给定如下用户数组:

const array = [
  { userid: 1, xp: 36 },
  { userid: 2, xp: 61 },
  { userid: 3, xp: 13 }
];

推荐使用 Array.prototype.toSorted() —— 这是 ES2023 引入的纯函数式方法,它不会修改原数组,而是返回一个新排序数组,语义清晰且更安全:

const sorted = array.toSorted((a, b) => b.xp - a.xp);
console.log(sorted);
// → [{ userid: 2, xp: 61 }, { userid: 1, xp: 36 }, { userid: 3, xp: 13 }]

✅ 排序逻辑说明:b.xp - a.xp 实现降序排列(最大 XP 在前);若需升序,改为 a.xp - b.xp 即可。

⚠️ 兼容性注意:toSorted() 在 Node.js 20+ 和现代浏览器(Chrome 117+, Firefox 119+, Safari 17.4+)中已原生支持。若需支持旧环境(如 Node.js < 20 或 IE),可采用以下两种方案:

用于自动切换项目中适合的node 版本
用于自动切换项目中适合的node 版本

根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。

下载

方案一:使用 sort() + 展开运算符(推荐)

const sorted = [...array].sort((a, b) => b.xp - a.xp);

方案二:轻量级 polyfill(全局补充)

// 仅在缺失时定义,避免覆盖原生实现
if (!Array.prototype.toSorted) {
  Array.prototype.toSorted = function(compareFn) {
    return [...this].sort(compareFn);
  };
}

? 补充提示:

  • sort() 默认按字符串 Unicode 排序,因此必须传入比较函数处理数字属性(如 xp),否则 61 可能排在 13 之前(因 '6' > '1')。
  • 若 xp 字段可能为 undefined 或非数字,建议增强健壮性:
    (a, b) => (b.xp ?? -Infinity) - (a.xp ?? -Infinity)

掌握 toSorted() 不仅提升代码可读性与安全性,也体现了现代 JavaScript 的函数式编程实践——始终优先选择不产生副作用的方法。

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

2746

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

5439

2023.11.06

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

3867

2026.03.24

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

6124

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3024

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

1792

2025.10.17

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

1138

2023.09.04

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1778

2023.08.03

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.3万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn