利用JavaScript对中文(汉字)进行排序实例详解
前言
在网页上展示列表时经常需要对列表进行排序:按照修改/访问时间排序、按照地区、按照名称排序。
对于中文列表按照名称排序就是按照拼音排序,不能简单通过字符串比较—— ‘a' > ‘b'——这种方式来实现。
比如比较 ‘北京' vs ‘上海',实际是比较 ‘běijīng' vs ‘shànghǎi';比较 ‘北京' vs ‘背景',实际是比较 ‘běijīng' vs ‘bèijǐng'。
一般需要获取到字符串的拼音,再比较各自的拼音。
实现方法
JavaScript 提供本地化文字排序,比如对中文按照拼音排序,不需要程序显示比较字符串拼音。
String.prototype.localeCompare
在不考虑多音字的前提下,基本可以完美实现按照拼音排序。
在没有出现意外的情况下,各个支持 localeCompare 的浏览器都很正常。最近将 Chrome 更新到 58.0.3029.110,突然发现中文排序不正常。
// 正常应该返回 1, 拼音 jia 在前, kai 在后 '开'.localeCompare('驾'); // 得到 -1; // Chrome 58.0.3029.110 下返回 -1, 其他浏览器正常 // 确认之后是 localeCompare 需要明确指定 locales 参数 '开'.localeCompare('驾', 'zh'); // 得到 1
在 Chrome 下传递 locales 参数才能获得正常预期结果
Edge 浏览器支持 localeCompare
Firefox 浏览器支持 localeCompare
IE 11 浏览器支持 localeCompare
其他浏览器对 localeCompare 支持也很友好,目前也不需要明确传递 locales,浏览器支持参考 developer.mozilla.org
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
相关推荐
-
js汉字转拼音实现代码
代码下载:复制以下代码到PinYin.js即可.调用方法: var pinyin = codefans_net_CC2PY("你好吗");PinYin.js 复制代码 代码如下: var PinYin = {"a":"\u554a\u963f\u9515","ai":"\u57c3\u6328\u54ce\u5509\u54c0\u7691\u764c\u853c\u77ee\u827e\u788d\u7231\u9
-
JavaScript 给汉字排序实例代码
比如 var arr = ["中","华","人","民","共","和","国"],在执行 sort 方法后结果为 :中,人,共,华,和,国,民,既不是拼音也不是笔划数量的排序. 以前很少留意过 localeCompare 方法,手册中说它执行时返回一个值,指出在当前的区域设置中两个字符串是否相同.返回值有三种:-1,0,1,刚好是 sort 方法参数所需要
-
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
具体技术 1.使用GB编码与UNICODE的转换 2.数组关联排序 注意:GB编码 库地址 http://demo.jb51.net/jslib/qswhGB2312.js 代码(demo写的很简陋) 复制代码 代码如下: <script> //power by 毛绒猫猫 liuyutong@baidu.com var strGB="啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬 扳般颁板版扮拌伴瓣半
-
javascript对中文按照拼音排序代码
今天在代码中用到了对中文按照拼音排序,咨询了群里面的大神后得到了下面的代码: var arr = ["张三","李四","王五","阿三"]; document.write(arr+"<br/>"); arr.sort(function(a,b){ return a.localeCompare(b); }); document.write(arr);
-
JS实现中文汉字按拼音排序的方法
本文实例讲述了JS实现中文汉字按拼音排序的方法.分享给大家供大家参考,具体如下: 代码1,拼音排序: var array = ['武汉', '北京', '上海', '天津']; var resultArray = array.sort( function compareFunction(param1, param2) { return param1.localeCompare(param2,"zh"); } ); console.log(resultArray); 火狐浏览器 resu
-
js 淘宝首页的拼音排序效果
无标题文档 dl,dd,dt { margin:0; padding:0; } #qq { width:600px; overflow:hidden; height:500px; margin:0 auto; background:#fafafa; padding:15px; } #qq span { display:block; width:80px; height:25px; line-height:25px; float:left; } dl { width:500px; line-hei
-
JavaScript实现拼音排序的方法
一般情况下,大家会使用下面的方法来进行汉字的拼音排序 复制代码 代码如下: var list = [ '王', '张','李']; list.sort(function (a, b) { return a.localeCompare(b); }); localeCompare() :用本地特定的顺序来比较两个字符串. 通过localeCompare这个方法来进行拼音排序的不可靠之处在于: 1. 很依赖中文操作系统 2. 很依赖浏览器的内核 也就是说,如果你的网站访问者是通过非中文系统,或者非IE
-
js实现汉字排序的方法
本文实例讲述了js实现汉字排序的方法.分享给大家供大家参考.具体如下: <script type="text/javascript"> <!-- function startSort(){ var a=document.getElementById('s').value; a=a.split(',') a.sort(); document.getElementById('r1').value=a; a.sort(function(a,b){return a.local
-
js仿淘宝的拼音检索特效代码
以下是HTML网页特效代码,点击运行按钮可查看效果 js仿taobao效果 *{ margin:0;padding:0;} body{ font:normal 12px Verdana, Arial, Helvetica, sans-serif; text- align:center;} #warpper{ position:absolute; left:100px; top:100px;} h5{ float:left;} a{ text-decoration:underline; curso
-
javaScript对文字按照拼音排序实现代码
复制代码 代码如下: <title>JavaScript对文字按照拼音排序</title><SCRIPT type="text/javascript">function defaultSort(){var a="zhongguo,daguo,世界,中国,超级大国";a=a.split(",");a.sort();alert(a);}function cusSort(){var a="zhongguo,
-
Extjs Gird 支持中文拼音排序实现代码
复制代码 代码如下: <script type="text/javascript"> Ext.data.Store.prototype.applySort=function(){//重载applySort if(this.sortInfo && !this.remoteSort){ var s = this.sortInfo, f=s.field; var st=this.fields.get(f).sortType; var fn=function(r1,
-
用正则表达式判断字符串是汉字还是拼音的js函数代码
复制代码 代码如下: function checkFormat(str) { if (escape(str).indexOf("%u")!=-1) alert("不能含有汉字"); else if(str.match(/\D/)!=null) { alert('不能含有字母'); } }
随机推荐
- 详解Angular的内置过滤器和自定义过滤器【推荐】
- vbs中获取脚本当前路径的2个方法
- phpStudy2016 配置多个域名期间遇到的问题小结
- 正则表达式、分组、子匹配(子模式)、非捕获子匹配(子模式)
- Android之使用Bundle进行IPC详解
- 从零学JSON之JSON数据结构
- VBScript教程 第十一课深入VBScript
- perl的cgi高级编程介绍
- js实现的修改div里img标签的src属性
- 如何解决PHP无法实现多线程的问题
- innodb系统表空间维护方法
- 解析Ubuntu下crontab命令的用法
- jquery中get,post和ajax方法的使用小结
- jQuery源码解读之extend()与工具方法、实例方法详解
- 微信小程序实现带刻度尺滑块功能
- javascript 特性检测并非浏览器检测
- javascript获取网页各种高宽及位置的方法总结
- 浅谈ubuntu 使用securecrt vi编辑出现的问题
- Python2.7下安装Scrapy框架步骤教程
- 详解Tensorflow数据读取有三种方式(next_batch)