sort()默认按字符串unicode码点排序,数值排序需传比较函数;reverse()仅反转原数组顺序,两者均直接修改原数组。

sort 和 reverse 是 JavaScript 数组上两个常用但行为容易混淆的方法:前者默认按字符串 Unicode 码点排序(不是数值大小),后者直接反转原数组顺序,不涉及比较逻辑。
sort():默认排序有陷阱,数值排序必须传比较函数
直接调用 arr.sort() 会把所有元素转成字符串再逐字符比较,导致 [10, 2, 33, 1] 排成 [1, 10, 2, 33](因为 "1"
要正确按数值升序排列,需传入比较函数:
-
升序(小→大):
arr.sort((a, b) => a - b) -
降序(大→小):
arr.sort((a, b) => b - a) -
字符串忽略大小写升序:
arr.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()))
注意:sort() 直接修改原数组,返回值也是该数组(不是新数组)。
reverse():简单粗暴,只反转顺序
arr.reverse() 不做任何比较或转换,就是把索引 0 和最后一项交换、1 和倒数第二项交换……依次类推。适用于已排好序后想快速取反,比如把升序变降序。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 对数字数组:
[1, 3, 5, 7].reverse()→[7, 5, 3, 1] - 对字符串数组:
['a', 'Z', 'b'].reverse()→['b', 'Z', 'a'](不改变大小写,只调换位置)
同样,它也直接修改原数组,并返回该数组。
组合使用:先 sort 再 reverse 实现降序
如果不想写比较函数,可以用升序 + 反转来模拟降序:
-
[3, 1, 4, 1, 5].sort((a, b) => a - b).reverse()→[5, 4, 3, 1, 1]
但这种方式比直接用 (a, b) => b - a 多一次遍历,性能略差,仅作理解逻辑时参考。
注意:对象数组排序需明确提取比较字段
对对象数组,不能直接 sort(),得在比较函数里指定属性:
- 按年龄升序:
users.sort((a, b) => a.age - b.age) - 按姓名字母序(忽略大小写):
users.sort((a, b) => a.name.localeCompare(b.name)) - 多级排序(先按城市,再按年龄):
arr.sort((a, b) => a.city.localeCompare(b.city) || a.age - b.age)
所有操作都改变原数组,如需保留原始顺序,请先用 slice() 或展开运算符复制:[...arr].sort(...)。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










