首页 > 其他分享 >js根据姓名首字母构造字母索引列表

js根据姓名首字母构造字母索引列表

时间:2023-05-19 16:57:19浏览次数:40  
标签:name 索引 pinyin initial js 首字母 item

js根据姓名首字母构造字母索引列表

1、首先安装js-pinyin插件

npm install js-pinyin

2、引入js-pinyin

// npm install js-pinyin下的映入
import pinyin from 'js-pinyin'
// 我的是下载下来将js-pinyin放在了当前文件目录下,如果是放在node_modeule里面的话如上引入就行
import pinyin from './js-pinyin/index.js'

3、利用插件构造字母索引数据结构,调用下面的方法即可

getPyData(info) {
    pinyin.setOptions({
        checkPolyphone: false,
        charCase: 0
    })
    let alphabet = []; //索引字母数组
    let sourceData = info || [] //目标数组
    sourceData.forEach((item, index) => {
        // 获取目标数组每一项的 name 值
        let name = item.name_
        // 获取每一个name值第一个字的大写首字母(传入的 name 是中文时默认得到大写字母,              name 是英文时按照原字符串输出,可能是小写)
        let initial = pinyin.getCamelChars(name).substring(0, 1).toUpperCase()
        // 给数组每一项增加名为 initial 的 key,值就是第一个字的大写首字母
        item.initial = initial
        // 获取用于索引的字母
        if (alphabet.indexOf(initial) === -1) {
            alphabet.push(initial)
        }
    });
    // 按字母表顺序排序
    alphabet.sort()
    let resultData = {}
    // 将源数据按照首字母分类
    alphabet.forEach((item, index) => {
        resultData[item] = sourceData.filter((it) => {
            return it.initial === item
        })
    });
    // 得到最终结果 resultData
    return resultData
},

4、调用上面的方法返回的数据结构如下(没有数据的字母索引不会包含在其中),可再次基础上构建自己所需要的数据格式

{
    A:[{name:"艾三"}],
    B:[{name:"班三"}],
    C:[{name:"程三"}],
    D:[{name:"度三"}],
    E:[{name:"E三"}],
    F:[{name:"F三"}],
    ......
    Z:[{name:"F三"}],
}

标签:name,索引,pinyin,initial,js,首字母,item
From: https://www.cnblogs.com/yangguanglei/p/17415712.html

相关文章

  • js 使用 eval 函数优化条件查询
    我们在写代码的使用,经常会遇到ifelse很长很长的代码,这种要怎么优化,一直是仁者见仁智者见智的我说下我的优化方案原始代码例如:if(income<=10000){ returnincome*0.365;}elseif(income<=30000){ return(income-10000)*0.2+35600;}elseif(income<=60000)......
  • 【由浅入深学MySQL】之MySQL索引基础入门
    本系列为:MySQL数据库详解,为千锋教育资深教学老师独家创作致力于为大家讲解清晰MySQL数据库相关知识点,含有丰富的代码案例及讲解。如果感觉对大家有帮助的话,可以【关注】持续追更~文末有本文重点总结,技术类问题,也欢迎大家和我们沟通交流!前言从今天开始本系列内容就带各位小伙......
  • uni.request(OBJECT)前端post请求数据json序列化
    一、uni-app前端post请求数据json序列化1.前置须知Content-Type实体头部用于指示资源的MIME(媒体)类型mediatype。在响应中,Content-Type标头告诉客户端实际返回的内容的内容类型。在请求中,客户端告诉服务器实际发送的数据类型。2.uni.request({})官方文档2.1dat......
  • JS删除对象中的某一属性(delete)
    通过delete操作符,可以实现对对象属性的删除操作<!--*@Descripttion:删除对象以及数组对象中的指定属性*@version:*@Author:zhangfan*@email:[email protected]*@Date:2020-07-0309:10:28*@LastEditors:zhangfan*@LastEditTime:2020-07-1515:03:00......
  • js中的foreach用法
    刚才采用foreach来遍历数组,达到格式化el-table中的数据,发现用foreach不生效,但是用户for循环没问题。吓我一跳,赶紧看了一下js中的foreach用法,没毛病啊。用了这么多年难道还会用错。<!--*@Descripttion:js中的foreach用法*@version:*@Author:zhangfan*@email:220704......
  • Cookie的使用(js-cookie插件)
    1.js-cookie一个简单,轻巧的JavaScriptAPI,用于处理Cookie2.安装npminstalljs-cookie--save3.引用importCookiesfrom'js-cookie'Vue.prototype.$Cookies=Cookies;4.创建<!--作者:zhangfan页面名称:Cookie的使用(js-cookie插件)--><template><divid="produc......
  • JSON.parse和JSON.stringify方法详解
    1.JSON.parse()用于从一个字符串中解析出json对象<!--作者:zhangfan页面名称:JSON.parse()、JSON.stringify()使用方法--><template><divid="product-list-one"><button@click="jsonParse()">执行jsonParse</button></div><......
  • JSP
    JSP已经过时的技术,但是还是有必要了解一些,因为现在仍然有可能在维护以前的旧项目。1、什么是jsp,他有什么用?jsp全称是javaserverpages。java的服务器页面。jsp的主要作用是代替Servlet程序回传html页面的数据。因为Servlet程序回传html页面数据是一件非常繁琐的事情,开发成本......
  • JSON、AJAX、i18n
    JSON、AJAX、i18n1、什么是JSON?1.1、JSON在JavaScript中的使用1.1.1、JSON的定义json是由键值对组成,并且由花括号(大括号)包围,每个键由引号引起来,键和值之间使用冒号进行分割,多组键值对之间进行逗号分隔。//json的定义varjsonobj={"key1":12,"key2":"abc",......
  • Vue.js学习记录之在元素与template中使用v-if指令实例(转贴)
    语法比较简单,直接上代码:<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <title></title> <scriptsrc="https://cdn.bootcss.com/vue/2.2.2/vue.......