js 中文, 英文, 数字混排实现方案

如题所述

第1个回答  2024-08-11
numer 数组排序

结果: 排序后的结果不是按照 number 值大小进行排序的

原因: Array.prototype.sort() 方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列时构建的

解决方案:

英文字符串排序小写排序

结果: 符合预期, 是按照英文字母的顺序进行排序的

原因: 英文字符的 ascii[unicode] 码顺序和字母的顺序一致

大小写混排

结果: 大写在前, 小写在后

原因: 大写英文字符的 ascii[unicode] 码值在小写英文字母的前面

解决方案: 不区分大小写字母进行排序

中文字符

结果: 中文的排序不是按照中文首字母进行排序的

原因: 中文的 unicode 码不是按照拼音顺序进行排序的

解决方案:

其他问题:

问题1: 不同的 node 版本执行结果不一致

目前测试 12 不一致, 14, 15, 16 都一致, node 版本高的话可以忽略这个问题

问题2: linux 下 和 macos 下 node, 输出结果不同

问题2: 解决方案

中文, 英文, 数字字符串混排

结果:

中文, 英文, 数字字符串混排, 按照数值大小对数值字符串排序

中文, 英文, 数字字符串混排, 按照数值大小对数值字符串排序, 且英文排在数字后面, 中文前面

代码优化
相似回答
大家正在搜