You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何根据字符串内的数字对数组进行升序排序

JS数组按字符串内数字升序排序实现方案

核心实现逻辑

要兼容1位、2位、3位数字的识别,注意不要直接用字符串默认排序规则处理数字,否则会出现'10'排在'2'前面的错误(字符串比较是逐字符对比,不会按数值大小判断),正确处理逻辑如下:

  • 用正则/\d+/匹配字符串中连续的数字段,不受数字位数限制
  • 将提取到的数字段转为整数,通过数值差判断排序顺序
  • 同数字场景下可追加前缀字母的比较,保证排序稳定性

完整可运行代码

// 初始数组
const sourceArr = [
  'B3', 'B4', 'B5',
  'B6', 'C3', 'C4',
  'C5', 'C6', 'D3',
  'D4', 'D5', 'D6'
]

// 排序处理
const sortedArr = sourceArr.sort((prev, next) => {
  // 提取两个元素中的数字并转成整数
  const prevNum = parseInt(prev.match(/\d+/)[0], 10)
  const nextNum = parseInt(next.match(/\d+/)[0], 10)

  // 数字相等时按前缀字母排序,否则直接按数字升序排
  return prevNum === nextNum ? prev.localeCompare(next) : prevNum - nextNum
})

运行结果

执行后sortedArr的输出和预期完全一致:

[
  'B3', 'C3', 'D3',
  'B4', 'C4', 'D4',
  'B5', 'C5', 'D5',
  'B6', 'C6', 'D6'
]

说明:该写法对数字位数没有强制限制,除了1-3位数字外,更多位数的数字(比如A10、B123、C9999这类格式)也能正确排序。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:36:23