RT 要求
数组的每一个元素都为字符串 举例
顺序为 "" >特殊字符 > 数字 > 大写字母 > 小写字母 > 汉字
其中特殊字符按照 Unicode 码排序, 数字按照从小到大的顺序,大小写字母按照字母表排序 汉字按照拼音来排序 "" 指的是空字符串
举例
let arr = ["_A001", "_a001", "A001", "B001", "C001", "骑士", "火箭", "", "a001", "b001", "z001", "z002", "123", "455", "566"];
//期望结果
// ["", "_A001", "_a001", "123", "455", "566", "A001", "B001", "C001", "a001", "b001", "z001", "z002", "火箭", "骑士"]
自己用了Array.prototype.sort
写的, 对汉字使用localeCompare
函数比较, 对数字及其他,使用默认的规则, 却发现456
老是排在123
的前面
无奈了...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.