数组中的汉字依拼音顺序进行排序

Posted neeter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组中的汉字依拼音顺序进行排序相关的知识,希望对你有一定的参考价值。

为了实现类似微信通讯录的效果,需要按汉字拼音顺序依次排序显示,在网上查找了相关方法后,根据自己需求做出相应修改,下面贴上代码:

  

var pySegSort=(arr) =>{ // 汉字拼音排序
    if (!String.prototype.localeCompare) return null
    let letters = ‘abcdefghjklmnopqrstwxyz‘.split(‘‘)
    let zh = ‘阿八嚓哒妸发旮哈讥咔垃痳拏噢妑七呥扨它穵夕丫帀‘.split(‘‘)
    let segs = [],other = { letter: ‘#‘,data:[] }
    letters.forEach((v, i) => {
        let cur = { letter: v.toUpperCase(), data: [] }
        arr.forEach((item) => {
            if(/^[u4e00-u9fa5a-zA-Z]/g.test(item)){ // 判断是否能根据字母匹配
                if(item.localeCompare(zh[i])>=0&&item.localeCompare(zh[i+1])<0){
                    cur.data.push(item)
                }
            }else if(other.data.indexOf(item) < 0){
                other.data.push(item)
            }
        })
        if (cur.data.length) {   
            cur.data.sort(function(a, b) {
                return a.localeCompare(b, ‘zh‘)
            })
            segs.push(cur)
        } 
    })
    if(other.data.length){ // 若包含未匹配拼音排序的加到最后一项
        segs.push(other)
    }
    return segs
}

其中主要函数localeCompare用于比较字符串,换算规则暂时没有深入研究,将匹配出来的字段存放到另一数组中并排序,最后在与未匹配字段的数组合并后返回。返回结果格式:[{"letter":"A","data":[""]},{"letter":"B","data":[""]}]

以上是关于数组中的汉字依拼音顺序进行排序的主要内容,如果未能解决你的问题,请参考以下文章

C# 获取汉字拼音首字母

sql语句-按照汉字拼音首字母排序

sql语句-按照汉字拼音首字母排序

oracle的order by 中文排序原理

oracle 中查询结果的排序

JAVA 汉字首字母排序