箭头函数配合Array.sort()可简洁实现各类排序:数字用a-b升序、b-a降序;字符串用localeCompare安全排序;对象按属性、嵌套属性、空值兜底及组合排序均一行搞定。

箭头函数配合 Array.sort() 能写出非常简洁的比较器,关键在于理解比较函数的返回值逻辑:返回负数(如 -1)表示前项排前面,正数(如 1)表示后项排前面,0 表示顺序不变。
数字数组升序/降序
直接用减法最简洁,无需 if 或 return 语句:
升序:[3, 1, 4, 1, 5].sort((a, b) => a - b); // [1, 1, 3, 4, 5]
降序:[3, 1, 4, 1, 5].sort((a, b) => b - a); // [5, 4, 3, 1, 1]
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
立即学习“Java免费学习笔记(深入)”;
字符串按字母序排序
用 String.prototype.localeCompare() 安全又简洁,自动处理大小写、重音等:
- 默认升序:
['Banana', 'apple', 'Cherry'].sort((a, b) => a.localeCompare(b)); - 忽略大小写:
.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' })); - 降序加负号:
.sort((a, b) => -a.localeCompare(b));
对象数组按属性排序
链式取值 + 箭头函数,支持多级和类型转换:
- 按数字属性:
items.sort((a, b) => a.price - b.price); - 按字符串属性(安全):
items.sort((a, b) => a.name.localeCompare(b.name)); - 按嵌套属性:
users.sort((a, b) => a.profile.age - b.profile.age); - 空值兜底(避免
undefined导致 NaN):.sort((a, b) => (a.score ?? 0) - (b.score ?? 0));
组合排序(先主后次)
用逻辑或 || 实现“主条件相等时比次条件”:
products.sort((a, b) => a.category.localeCompare(b.category) || a.price - b.price);
→ 先按分类字母序排,同类再按价格升序。

















