javascript - 如何先用字母然后用数字对数组项进行排序?
问题描述
我有这个数组
const a = ['s2', 'sb', 's5', 's1', 'sc', 's3', 's4']
排序后我想要这个结果:
['sb', 'sc', 's1', 's2', 's3', 's4', 's5']
我尝试使用 sort() 但没有用
解决方案
您最初可以使用 localeCompare 进行排序,然后通过测试 number 是否存在:
const a = ['s2', 'sb', 's5', 's1', 'sc', 's3', 's4', 's10', 'sa', 'sza', 's200', 's12', 's113'];
a.sort((a, b) => a.localeCompare(b, 'en', { numeric: true }))
.sort((x, y) => (/[0-9]/g).test(x) - (/[0-9]/g).test(y));
console.log(a);
// ["sa", "sb", "sc", "sza", "s1", "s2", "s3", "s4", "s5", "s10", "s12", "s113", "s200"]
推荐阅读
- c++ - std::chrono 时钟允许使用带有小数部分的浮点表示
- windows - NTFS 权限:只允许在 UAC 提示下创建/修改/删除文件夹、子文件夹和文件
- r - 如何将计数总结为百分比而不是绝对值?
- javascript - 连续的水平 HTML 页面?
- powershell - ffmpeg - 转换文件但保持与原始相同的日期修改?
- rxjs - 如何监视像“take”这样的 Rxjs 操作符
- r - dplyr::filter 使用滞后/超前匹配多列的字符的行
- nullpointerexception - 我被迫为我的节点做一个空指针异常
- java - 扫描仪在辅助方法中给我错误
- powerbi - Microsoft Power BI 和 DAX - 计算非 YTD 度量的上一年周数的百分比变化