js使用localeCompare中文排序
localeCompare:
localeCompare方法详细介绍:
问题描述:
使用localeCompare对一个字符串数组按名称排序
const arr = ['我','B','c','C','b','玩手机','233','1024','211','吃饭']; arr.sort((a,b)=>a.localeCompare(b)); //["1024", "211", "233", "吃饭", "玩手机", "我", "b", "B", "c", "C"]
但在Mac 和 Windows 上对大小写字母的排序规则不一致
而且在中文环境下,默认的排序规则是:数字 > 中文 > 字母 ,产品需要改为:数字 > 字母 > 中文
解决方案:
一般情况下,传入locales就可以了
数字 > 中文 > 小写字母 > 大写字母
arr.sort((a,b)=>a.localeCompare(b,'zh-CN-u-kf-lower')); //["1024", "211", "233", "吃饭", "玩手机", "我", "b", "B", "c", "C"]
数字 > 中文 > 大写字母 > 小写字母
arr.sort((a,b)=>a.localeCompare(b,'zh-CN-u-kf-upper')); //["1024", "211", "233", "吃饭", "玩手机", "我", "B", "b", "C", "c"]
数字 > 小写字母 > 大写字母 > 中文
arr.sort((a,b)=>a.localeCompare(b,'en-US-u-kf-lower')); //["1024", "211", "233", "b", "B", "c", "C", "吃饭", "我", "玩手机"]
数字 > 大写字母 > 小写字母 > 中文
arr.sort((a,b)=>a.localeCompare(b,'en-US-u-kf-upper')); //["1024", "211", "233", "B", "b", "C", "c", "吃饭", "我", "玩手机"]
const columns = [{ title: '汉字', dataIndex: 'name', sorter: (a, b) => a.name.localeCompare(b.name) }, { title: '数字', dataIndex: 'amount', sorter: (a, b) => a.amount - b.amount, }, { title: '字符串', dataIndex: 'value', sorter: (a, b) => a.value.localeCompare(b.value) } ];
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报