js中文汉字按拼音排序
首页 > >    作者:lininn   2021年2月3日 11:00 星期三   热度:1585°   百度已收录  
时间:2021-2-3 11:00   热度:1585° 

JavaScript 提供本地化文字排序,比如对中文按照拼音排序,不需要程序显示比较字符串拼音。

String.prototype.localeCompare 在不考虑多音字的前提下,基本可以完美实现按照拼音排序。

在没有出现意外的情况下,各个支持 localeCompare 的浏览器都很正常。最近将 Chrome 更新到 58.0.3029.110,突然发现中文排序不正常。

确认之后是 localeCompare 需要明确指定 locales 参数.

 

代码1,拼音排序:

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

火狐浏览器 resultArray 结果为:[ '北京' , '上海' , '天津' ,'武汉' ] ;

 

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


 1 function pySegSort(arr,empty) {
 2     if(!String.prototype.localeCompare)
 3         return null;
 4      
 5     var letters = "*abcdefghjklmnopqrstwxyz".split('');
 6     var zh = "阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀".split('');
 7      
 8     var segs = [];
 9     var curr;
10     $.each(letters, function(i){
11         curr = {letter: this, data:[]};
12         $.each(arr, function() {
13             if((!zh[i-1] || zh[i-1].localeCompare(this,"zh") <= 0) && this.localeCompare(zh[i],"zh") == -1) {
14                 curr.data.push(this);
15             }
16         });
17         if(empty || curr.data.length) {
18             segs.push(curr);
19             curr.data.sort(function(a,b){
20                 return a.localeCompare(b,"zh");
21             });
22         }
23     });
24     return segs;
25 }

按照a-z排序

var arr=[
  {val:'z'},
 {val:'c'}
]
arr.sort((a,b)=>{
                            if(a.val>b.val) return 1;
                              if(a.val<b.val) return -1;
 })

二维码加载中...
本文作者:lininn      文章标题: js中文汉字按拼音排序
本文地址:?post=498
版权声明:若无注明,本文皆为“覆手为雨”原创,转载请保留文章出处。
分享本文至:

返回顶部    首页    手机版本    后花园   会员注册   
版权所有:覆手为雨    站长: lininn