JS实现中文汉字按拼音排序的方法


Posted in Javascript onOctober 09, 2017

本文实例讲述了JS实现中文汉字按拼音排序的方法。分享给大家供大家参考,具体如下:

代码1,拼音排序:

var array = ['武汉', '北京', '上海', '天津'];
var resultArray = array.sort(
 function compareFunction(param1, param2) {
  return param1.localeCompare(param2,"zh");
 }
);
console.log(resultArray);

火狐浏览器 resultArray 结果为:

[ '北京' , '上海' , '天津' ,'武汉' ] ;

代码2,拼音排序并按字母分类:

function pySegSort(arr,empty) {
 if(!String.prototype.localeCompare)
  return null;
 var letters = "*abcdefghjklmnopqrstwxyz".split('');
 var zh = "阿八嚓哒??发旮哈讥咔垃???噢?r七??P它?夕丫??".split('');
 var segs = [];
 var curr;
 $.each(letters, function(i){
  curr = {letter: this, data:[]};
  $.each(arr, function() {
   if((!zh[i-1] || zh[i-1].localeCompare(this,"zh") <= 0) && this.localeCompare(zh[i],"zh") == -1) {
    curr.data.push(this);
   }
  });
  if(empty || curr.data.length) {
   segs.push(curr);
   curr.data.sort(function(a,b){
    return a.localeCompare(b,"zh");
   });
  }
 });
 return segs;
}
JSON.stringify(pySegSort(["我","不","懂","爱","啊","按","已","呀","选","县"]))

结果:

"[
{"letter":"a","data":["啊","爱","按"]},

{"letter":"b","data":["不"]},

{"letter":"d","data":["懂"]},

{"letter":"w","data":["我"]},

{"letter":"x","data":["县","选"]},

{"letter":"y","data":["呀","已"]}
]"

扩展:

JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容: https://3water.com/article/90842.htm
JS实现超简单的汉字转拼音功能示例:https://3water.com/article/100864.htm
一个实现汉字与拼音互转的小巧web工具库:https://github.com/sxei/pinyinjs

Javascript 相关文章推荐
JObj预览一个JS的框架
Mar 13 Javascript
文本框获得焦点和失去焦点的判断代码
Mar 18 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
Apr 29 Javascript
对象转换为原始值的实现方法
Jun 06 Javascript
ES6中的数组扩展方法
Aug 26 Javascript
javascript 正则表达式去空行方法
Jan 24 Javascript
js前端实现图片懒加载(lazyload)的两种方式
Apr 24 Javascript
react路由配置方式详解
Aug 07 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 Javascript
Vue自定义全局Toast和Loading的实例详解
Apr 18 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 Javascript
ES6实现图片切换特效代码
Jan 14 Javascript
ES6中的Promise代码详解
Oct 09 #Javascript
js+html5生成自动排列对话框实例
Oct 09 #Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
Oct 09 #jQuery
详解如何让Express支持async/await
Oct 09 #Javascript
jQuery插件artDialog.js使用与关闭方法示例
Oct 09 #jQuery
Node.JS使用Sequelize操作MySQL的示例代码
Oct 09 #Javascript
基于zepto.js实现登录界面
Oct 09 #Javascript
You might like
discuz安全提问算法
2007/06/06 PHP
php 移除数组重复元素的一点说明
2008/11/27 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
2014/06/12 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
vue+element+Java实现批量删除功能
2019/04/08 Javascript
微信小程序商品详情页底部弹出框
2019/11/22 Javascript
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
答题辅助python代码实现
2018/01/16 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
J2EE中常用的名词进行解释
2015/11/09 面试题
英文简历自荐信范文
2013/12/11 职场文书
应届实习生的自我评价范文
2014/01/05 职场文书
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
产品发布会策划方案
2014/05/12 职场文书
党员民主评议自我评价
2014/10/20 职场文书
市场营销计划书
2015/01/17 职场文书
征求意见函
2015/06/05 职场文书
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android
Docker部署Mysql8的实现步骤
2022/07/07 Servers
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL