其他分享
首页 > 其他分享> > 前端开发中按照汉字首字母排序分组

前端开发中按照汉字首字母排序分组

作者:互联网

在前端开发过程中,按照汉字首字母排序分组是很常见的操作,比如联系人列表、微信联系人列表

安装第三方插件   npm i --save jian-pinyin     

GitHub插件地址   https://github.com/xinglie/pinyin

在需要使用到的vue页面引入  import Pinyin from '../lib/node_modules/jian-pinyin/index'

具体方法参考以下demoPinyin 代码块


demoPinyn() {
    let origin = ['上饶', '上海', '深圳', '广州', '武汉', '十堰', '天津', '北京']
    // 先将汉字排序,用到原生的sort方法, 这一步是将首字母相同的进行排序, 如 上饶、上海、深圳都是'S'开头
    origin = origin.sort((pre, next) => pre.localeCompare(next))
    // 构造 Object 用来存储分组排序的数据
    const newObj = {}
    // 遍历第一轮排序后的数据,按照汉字首字母进行分组
    // Pinyin.getSpell方法用来获取汉字的拼音,默认传一个参数,如果遇到多音字,需要传第二个参数(是一个function)来决定取第几个读音,这里根据具体需求,demo中取的第二个读音
    origin.map(item => {
        // 获取汉字的首字母
        let key = Pinyin.getSpell(item, (char, spell) => {
            return spell[1]
        })[0].toUpperCase()
        // 如果对象中已有key,则push
        if (newObj.hasOwnProperty(key)) {
            newObj[key].push(item)
        } else { // r如果对象中没有这个key,则为这个key构造value,这里value是一个数组
            this.$set(newObj, key, [item])
        }
    })
    console.log('newObj----------->', newObj)
    //  打印出结果 newObj = { B: ["北京"], G: ["广州"], S: ["上海", "上饶", "深圳", "十堰"], T: ["天津"], W: ["武汉"] }
    return newObj
},

 

标签:item,汉字,newObj,首字母,分组,key,排序,前端开发
来源: https://blog.csdn.net/StoneG_G/article/details/117526246