日常开发中可能会遇到以下类似数组的首字母排序问题

['王宇', '金大','2liu', 'Jim', '阿雅', '赵大', '1liu', 'bim', 'uim', '金二', 'vim']

排序后:

['阿雅', 'bim', '金大', '金二', 'Jim', 'uim', 'vim', '王宇', '赵大', '1liu', '2liu']

码云:

gitee:JS实用工具集与案例探索: JS

const CHN = 'Chinese';
const ENG = 'English';
const NUM = 'Number';let reg = {[CHN]: /[\u4e00-\u9fa5]/,[ENG]: /[A-Za-z]/,[NUM]: /[0-9]/
}// 中文首字首字母搜索
const initialSearch = (c) => {let letters = "*abcdefghjklmnopqrstwxyz".split('');let zh = "阿八嚓哒妸发旮哈金咔垃痳拏噢妑七呥扨它穵夕丫帀".split('');let initialLetter = '';for(let i = 0; i <= letters.length - 1; i++){if((!zh[i-1] || zh[i-1].localeCompare(c) <= 0) && c.localeCompare(zh[i]) <= 0){initialLetter = letters[i];}}return initialLetter;}// 返回首字母的类型(Chinese、English、Number)
const initialTypeTest = (c) => {for(let r in reg){if(reg[r].test(c)){return r;}}
}// 排序规则方法
const initialSort = (a, b) => {// 字符串原始首字let aInitial = '';let bInitial = '';// 字符串首字对应的英文首字母let aInitialEnglishLetter = '';let bInitialEnglishLetter = '';// 字符串首字类型let aInitialType = '';let bInitialType = '';aInitialType = initialTypeTest(a[0]);bInitialType = initialTypeTest(b[0]);// 原始字符串首字为英文都转换为小写aInitial = aInitialType == ENG? a[0].toLowerCase() :a[0];bInitial = bInitialType == ENG? b[0].toLowerCase() :b[0];// 原始字符串首字如果是数字,比较的规则if(aInitialType == NUM && bInitialType == NUM){return aInitial == bInitial? 0: (aInitial > bInitial? 1: -1)}else if(aInitialType == NUM){return 1}else if (bInitialType == NUM){return -1}// 获取字符串首字母英文首字母,如果原始字符串首字母为英文直接获取aInitialEnglishLetter = aInitialType == ENG? aInitial: initialSearch(aInitial);bInitialEnglishLetter = bInitialType == ENG? bInitial: initialSearch(bInitial);// 如果字符串首字英文首字母相等的规则if (aInitialEnglishLetter == bInitialEnglishLetter){// 首字为中文排在前面if(aInitialType == ENG && bInitialType == CHN){return 1}else if(aInitialType == CHN && bInitialType == ENG){return -1}else{return 0}}// 如果首字英文首字母不相等,比较ASCii码值判断先后if (aInitialEnglishLetter.charCodeAt() < bInitialEnglishLetter.charCodeAt()){return -1}else{return 1}}

js 中文英文数字首字母混合排序相关推荐

  1. JS数组对象——英文按照首字母进行排序sort()、localeCompare()

    JS数组对象--英文按照首字母进行排序(sort.localeCompare) 上期回顾 场景复现 sort()方法与localeCompare 实例应用 上期回顾 文章内容 文章链接 JS数组对象- ...

  2. js中文转拼音首字母(js汉字转拼音首字母)

    一.js中文转拼音首字母实现功能 汉字转拼音首字母,js中文转拼音首字母 二.js中文转拼音首字母业务场景 在写即时通讯时必然要做通讯录(联系人列表),联系人列表通常是按照拼音字母表的顺序进行展示的, ...

  3. python按照中文汉字从首字母A-Z排序的方法

    需求: 实现能够按照中文汉字, 按照他的第一个汉字的首字母进行(A-Z)排序; 思路与实现:    将汉字转为拼音, 然后把拼音作为汉字的key, 以字典的形式进行存储;读取他的values[0]取到 ...

  4. js 根据汉字拼音首字母进行排序

    我们需要一个开源的汉字库,也就是码表.这个库就可以.git库 不想去git下载直接拉到最底下有js文件,直接复制就行. 然后页面引入 import china from '@/utils/china' ...

  5. 城市名称按首字母分组排序,并实现多音字处理

    一.需求 将城市列表(中文)按照首字母分组排序,以26个字母的顺序进行分组. 传统的解决方式使用如下pinyin4j来解决: <dependency><groupId>com. ...

  6. 混合索引java代码,Elasticsearch 实现拼音,中文,首字母混合搜索

    在实际搜索需求中,常常需要对中文做拼音搜索,首字母搜索或者中文拼音首字母混合搜索. 比如要对 "广发聚财信用" 这几个中文进行拼音搜索,我们可能的搜索关键字是:"广发&q ...

  7. 使用Java对中文首字母进行排序

    前言 最近由于工作需求,需要对行政区划根据中文首字母进行排序,在网上查了些资料,没有什么收获,基本上都是千篇一律.相互"借鉴".因此本人在此做一个整理,以备后续不时之需. 废话不多 ...

  8. JS按照首字母进行排序

    JS按照首字母进行排序(改变排序编码方式) let arr=["上海","南京","北京","广州","深圳& ...

  9. js 实现 将一句英文的首字母转大写,其它转小写

    //将一句英文的首字母转大写,其它转小写 var word='Welcome to my little WORLd. I have a DREAM thAt iS TO fLy to tLe sky' ...

最新文章

  1. BZOJ1977: [BeiJing2010组队]次小生成树 Tree
  2. 服务器系统防火墙例外,Windows Server 2012设置端口例外、防火墙设置方法
  3. 真的!最难啃的《深度学习》圣经花书,居然新出版了视频课!
  4. 中金所技术各部门介绍_【电视技术】液晶电视背光板各部分电路介绍
  5. 苹果CMS的V10版本后台登录一直提示验证码错误的解决方案
  6. el-table处理某一行样式;el-table表格row-class-name无效原因;el-table格式化某行样式和数据
  7. java抽象类例子_关于java抽象类的例子
  8. android 验证码图片识别_图片验证码的识别技术
  9. word参考文献后面的附录在目录显示不出来如何解决
  10. 顶级 OEM 游戏整机到底行不行 — 惠普 OMEN 暗影精灵 6 游戏台式旗舰版评测
  11. 大数据分析师需要掌握哪些技能
  12. Discuz 模板目录
  13. 墨画子卿第三章第5节:飞过去的是胧月
  14. python第一天----爬取优美图库的图片
  15. 5 开源Math.NET基础数学类库使用 C#解析Delimited Formats数据格式
  16. 计算机网络笔记(王道考研) 第三章:数据链路层
  17. SpringMVC配置文件中的各个组件
  18. 吴恩达深度学习笔记六:序列模型
  19. 格力美的,谁代表中国制造的未来
  20. SAP BAdI 深度解读

热门文章

  1. C++缺省参数的具体使用
  2. ffplay flv mp4 转_ffmpeg转换mp4到flv的使用笔记
  3. 基于飞凌i.MX6UL实现中央空调集中器
  4. 小米集团2022未来星专项招聘开始啦!
  5. matlab l 汉字字符串,Matlab 字符串处理
  6. 花百万年薪从阿里挖了个 P8 程序员!难道是“水货”?
  7. markdown换行和缩进
  8. 北京理工大学计算机学院招聘,赵清杰_北京理工大学计算机学院
  9. 计算机宋巍,北京理工大学教务部
  10. 财务上的预提、摊销、计提