之前在其他地方看的zh字母分类列表不对,导致部分排序错误,特此记录

最重要的首拼汉字列表: 阿八嚓耷妸发旮哈丌咔垃妈嗯喔妑七呥仨他穵夕丫帀

// sourceData: [{ id: restaurant.id, name: restaurant.name, available: true }, ...]
function formatCommonData(sourceData) {let childrens = {};if (sourceData.length > 0) {const result = [];const defaultIndexes = [{ i: 9, data: ['i'] }, { i: 21, data: ['v', 'u'] }];const letters = '*abcdefghjklmnopqrstwxyz'.split('');const zh = '阿八嚓耷妸发旮哈丌咔垃妈嗯喔妑七呥仨他穵夕丫帀'.split('');const english = new RegExp('[A-Za-z]+');letters.forEach((letter, index) => {const current = { index: letter.toUpperCase(), childrens: [] };sourceData.forEach((item) => {let matched = false;if (english.test(item.name.substr(0, 1))) {matched = item.name.length > 0 && item.name.charAt(0).toUpperCase() === letter.toUpperCase();} else {// localeCompare需要加参数 'zh', 不然在英文环境下,无法正常工作matched = (!zh[index - 1] || zh[index - 1].localeCompare(item.name, 'zh') <= 0) && item.name.localeCompare(zh[index], 'zh') === -1;}if (matched) {current.childrens.push({ id: item.id, name: item.name, available: true });}});result.push(JSON.parse(JSON.stringify(current)));});defaultIndexes.forEach((index) => {index.data.forEach((x) => {const list = sourceData.filter((item) => item.name.length > 0 && item.name.charAt(0).toUpperCase() === x.toUpperCase());const temp = [];list.forEach((item) => {temp.push({ id: item.id, name: item.name, available: true });});result.splice(index.i, 0, { index: x.toUpperCase(), childrens: temp });});});const last = result.filter((item) => item.childrens.length > 0);last.forEach((item) => {item.childrens.sort((a, b) => a.name.localeCompare(b.name, 'zh'));});childrens = { indexes: last.map((x) => x.index), data: last };}return childrens;
}

以上代码可以将 list 转为以下格式

{indexes: ['B', 'H', 'L', 'S'],data: [{index: 'B',childrens: [{ id: 1, name: '北京安立路', availabel: true },{ id: 2, name: '北京百子湾', availabel: true }]},{index: 'H',childrens: [{ id: 3, name: '河北', availabel: true },{ id: 4, name: '河南', availabel: true }]},......]
}

js 中文汉字按拼音排序,浏览器英文环境也可正确运行相关推荐

  1. js中文汉字按拼音排序

    1,datatable拓展 按中文排序 jQuery.extend( jQuery.fn.dataTableExt.oSort, {"chinese-string-asc" : f ...

  2. js中文汉字转拼音详细教程

    一.效果 主要实现了中文汉字转成拼音,非中文汉字部分则保留原格式,兼容了各类情况,下图中都有示例 文章最后有项目地址 二.思路 实际就是匹配字符编码转成相应的拼音,那么当然我们就需要对应的字符编码(C ...

  3. 中文汉字按拼音排序并按字母分类(uniapp indexedList索引列表格式匹配)

    最近做uni-app项目,遇到中文排序,使用indexedList组件布局渲染.自己也是查询了很多资料,https://www.cnblogs.com/wteng/p/5658972.html展现了一 ...

  4. Java字母笔顺_Android实现中文汉字笔划(笔画)、中文拼音排序、英文排序

    一.需求描述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 微信:简体中文.拼音排序 微信:繁体中文.笔画排序 微信 英文 字母排 ...

  5. Android实现中文汉字笔划(笔画)、中文拼音排序、英文排序

    发布时间:2018-11-16 技术:Android 概述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 简体中文 拼音排序;繁体 ...

  6. js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序——za排序 az排序

    js 根据汉字首字母排序(省份排序) 或 根据英文首字母排序--z~a排序 & a~z排序 示例1 let arr = ["贵州省", "江苏省", & ...

  7. 表格排序 支持汉字按拼音排序,面向对象的使用方法

    周末无聊利用swapNode方法写了个排序算法,性能比较一般,超简单的冒泡排序,但是由于使用了swapNode,所以TR以及TD对象后绑定的属性不会丢失,同时解决了checkbox在swapNode后 ...

  8. mysql中的汉字怎么转换_Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    一.创建拼音对照表 代码如下: -- 创建汉字拼音对照临时表 CREATE TABLE IF NOT EXISTS `t_base_pinyin` ( `pin_yin_` varchar(255) ...

  9. JS版汉字与拼音互转终极方案,附简单的JS拼音输入法

    原文:http://www.cnblogs.com/liuxianan/p/pinyinjs.html 前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的不支持多 ...

最新文章

  1. 计算机组成原理读写周期波形图,第3章存储器层次结构-1讲述.ppt
  2. JAVA sql2000 连接细节
  3. WebView 加载javaScript
  4. IDEA 2020.2 稳定版发布,带来了不少新功能...
  5. 用户注册功能交互流程
  6. “薅羊毛”漏洞分析 | 我是如何到处“混吃混喝”的
  7. 匹配嵌套的构造(较复杂)
  8. ubuntu16.04没有办法使用CRT,或者SSH工具的解决办法
  9. 英特尔一口气发布了三款处理器、两款存储、一款以太网适配器
  10. Random在java中怎么用_java中random()函数用法介绍
  11. 行为模型、价值模型、市场模型
  12. golang 微信小程序登录
  13. vs运行localhos转换为本地ip地址访问
  14. 三级分销系统哪家好?360shop
  15. oracle ola_访谈和书摘:Ola Bini,“实用的JRuby on Rails Web 2.0项目”
  16. Module use of python36.dll conflicts with this version of Python
  17. ppt模板文字拆分怎么制作?
  18. matlab光谱实验,实验四Matlab神经网络及应用于近红外光谱的汽油辛烷值预测
  19. office的一些软件
  20. 摄像头小巧待机时间长,不插电免安装手机远程监控,这是如何实现

热门文章

  1. 项目管理的完整流程是怎样的?
  2. oracle ebs应收贷记,【转】Oracle EBS 详解EBS接口开发之应收款处理
  3. POSIX thread
  4. MVC中方便的[Authorize],加上这特性,就可以加上登录验证
  5. 随机数——Random
  6. 实际蒸散发和潜在蒸散发
  7. 【兔年烟花】旖旎风景——浪漫烟花(Python实现)
  8. 针对某眼电影加密字体的爬虫
  9. 学C语言和C++它有毛关系吗?
  10. 第12章 项目沟通管理和干系人管理