信息发布→ 登录 注册 退出

如何排序数组_javascript中sort方法怎么用?

发布时间:2025-12-20

点击量:
JavaScript中sort()默认按Unicode码点字符串排序,数字数组需传入比较函数:升序用a-b,降序用b-a,对象按属性排序需自定义逻辑,中文等国际化文本应使用localeCompare。

JavaScript 中 sort() 方法默认按字符串 Unicode 码点排序,直接调用数字数组会得到错误结果(比如 [10, 2, 33] 排成 [10, 2, 33]),必须传入比较函数才能正确排序数字或自定义逻辑。

数字升序:用 (a, b) => a - b

这是最常用也最简洁的写法。返回值小于 0,a 排在 b 前;大于 0,b 排在 a 前;等于 0,顺序不变。

  • [5, 1, 9, 3].sort((a, b) => a - b)[1, 3, 5, 9]
  • 注意:它会**原地修改**原数组,不返回新数组
  • 如果想保留原数组,先用 slice() 或展开运算符复制:[...arr].sort(...)

数字降序:用 (a, b) => b - a

和升序逻辑相反,只需交换减数和被减数。

  • [5, 1, 9, 3].sort((a, b) => b - a)[9, 5, 3, 1]
  • 同样适用于负数、小数,比如 [-2.5, 0, 1.7].sort((a, b) => b - a)[1.7, 0, -2.5]

按对象属性排序:传入带逻辑的比较函数

比如按用户年龄升序,或按姓名字母顺序排列。

  • 按 age 升序:users.sort((a, b) => a.age - b.age)
  • 按 name 字母序(忽略大小写):users.sort((a, b) => a.name.toLowerCase().localeCompare(b.name.toLowerCase()))
  • 先按 type 分组再按 price 降序:items.sort((a, b) => a.type.localeCompare(b.type) || b.price - a.price)

字符串排序要注意 localeCompare

直接用 sort() 对中文、带重音符号的字母(如 é, ñ)可能出错。推荐用 localeCompare 替代 > 比较。

  • 安全的字母序:['香蕉', '苹果', '橙子'].sort((a, b) => a.localeCompare(b))
  • 支持语言选项,比如按中文拼音排:words.sort((a, b) => a.localeCompare(b, 'zh'))
  • 区分大小写?加选项:a.localeCompare(b, undefined, { sensitivity: 'base' })

基本上就这些。记住核心:不传函数 → 字符串排序;数字/对象/多条件 → 写比较函数;中文或国际化文本 → 优先用 localeCompare

标签:# javascript  # word  # java  # 排列  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!