首页 > 其他分享 >索引列表的制作,中文拼音排序

索引列表的制作,中文拼音排序

时间:2023-04-26 10:46:12浏览次数:51  
标签:userList 拼音 item pinyin 索引 push provice 排序 Initials

业务上最近需要做一个选择人员的页面,右侧会有一个快速索引,样式如下:

这个首先要把名字转拼音,然后取首字母,转大写,然后在新建的空对象里进行比对,如果有这个字母,就吧这条数据push进去,没有的话就在对象里创建该首字母的数组,再push进去,这样就形成了一个包含26个英文字母数组的对象

结构就是 

对象名 {
    A: [....],
    B:[....],
    .......
}

最后在进行一下排序就可以了

代码:

<u-index-list :index-list="indexList" :sticky="false">
            <template v-for="(item, index) in userList">
                <u-index-item>
                    <u-index-anchor :text="indexList[index]"></u-index-anchor>
                    <u-cell-group>
                        <u-checkbox-group borderBottom v-model="checkboxValue"  placement="column"  shape="circle">
                            <u-checkbox  v-for="(user) in item.list"  :key="user.userId" :label="user.userName" :name="user.userName" @change="checkboxChange(user)">
                            </u-checkbox>    
                        </u-checkbox-group>
                    </u-cell-group>
                </u-index-item>
            </template>
        </u-index-list>

用的是uview的索引列表组件, pinyin是用的js-pinyin ,要npm装一下就可以了

npm install js-pinyin

然后使用的页面引入一下,可以把汉字转为拼音

import pinyin from 'js-pinyin'
data(){ return{ indexList: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '#' ], userList: [], checkboxValue: [], } }, methods: { setUserList(val) { val.map((item) => { item.pinyin = pinyin.getFullChars(item.userName); }); let provice = {}; val.map((item) => { const Initials = item.pinyin[0].toUpperCase(); // 如果对象里有当前字母项则直接 push 一个对象,如果没有则创建一个新的键并赋值; if (provice[Initials]) { provice[Initials].push(item); } else { provice[Initials] = [item]; } }); // 将数据转为数组,并按字母顺利排列 this.userList = []; for (let key in provice) { const obj = { letter: key, list: provice[key] }; this.userList.push(obj); } this.userList.sort((a, b) => { return a.letter.localeCompare(b.letter); }); }, }

大体逻辑就是这样的

 

 样式什么的没来得及做,忙着对接口,先拿到数据再说,样式后面再慢慢搞吧

标签:userList,拼音,item,pinyin,索引,push,provice,排序,Initials
From: https://www.cnblogs.com/alannero/p/17354945.html

相关文章

  • 排序三角组件
    效果排序三角组件<template><divclass="order"><divclass="order-text"@click="textBtnFn"><slot></slot></div><divclass="order-icon"@click="nabFn"&......
  • MySQL索引详解
     DB哥MySQL高级教程-系统学习MySQL共149课时加我微信公众号免费学:DB哥文末有MySQL高级课程目录前言因为现在使用的mysql默认存储引擎是Innodb,所以本篇文章重点讲述Innodb下的索引,顺带简单讲述其他引擎。希望小伙伴们能通过这片文章对mysql的索引有更加清晰的认识,废话不多......
  • 排序算法之详解选择排序
    引入选择排序顾名思义是需要进行选择的,那么就要问题了,选择到底是选择什么呢?选择排序的选择是选择数组中未排序的数组中最小的值,将被选择的元素放在未排序数组的首位如果你对‘未排序数组’,‘选择’的概念不理解,那么你可以看看下面的图思路有了上面的一些基础之......
  • 冒泡排序
    问题描述:对N个整数(数据由键盘输入)进行升序排列。这里采用五个数。代码如下:#include<iostream>#include<vector>usingnamespacestd;intmain(){ inta[5],t; for(inti=0;i<5;i++){ cin>>a[i]; } for(inti=1;i<=4;i++){ for(intj=0;j<......
  • PGSQL 查询哪些表要索引,查表行数
    转自:(96条消息)PostgreSQLindexmonitor——监控哪些表需要创建索引_foucus、的博客-CSDN博客在数据库的使用过程中,可能某些表随着数据量的增大而因为没有索引仍旧使用的全表扫描,我们可以使用下列脚本来监控哪些大表上需要创建索引。1、监控哪些表需要创建索引SELECTr......
  • java8 lambda 求list最大值、最小值、平均值、求和、中位数、属性排序(空指针异常,空值
    点击查看代码importorg.junit.Test;importjava.text.SimpleDateFormat;importjava.util.*;importjava.util.stream.Collectors;importstaticjava.util.Comparator.comparingLong;importstaticjava.util.stream.Collectors.*;/***@Author:*@Date:2018/12......
  • 分治算法:剑指 Offer 25. 合并两个排序的链表
    题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 限制:0<=链表长度<=1000 解题思路:    classSolution{publicListNodemergeTwoLists(ListNodel1,ListNodel2){ListNodedum=newListNode......
  • 用Python实现十大经典排序算法
    用Python实现十大经典排序算法1.冒泡排序冒泡排序(BubbleSort)是一种比较简单的排序算法,它重复地走访过要排序的元素,依次比较相邻两个元素,如果它们的顺序错误就把他们调换过来,直到没有元素再需要交换,排序完成。算法过程比较相邻的元素,如果前一个比后一个大,就把它们两个对调位......
  • 【Mysql】复合主键的索引
    复合主键在where中使用查询的时候到底走不走索引呢?例如下表:createtableindex_test(aintnotnull,bintnotnull,cintnotnull,dintnull,primarykey(a,b,c));当执行以下SQL的时候到底走不走索引呢?SELECT*FROMindex_testWHERE......
  • 排序算法之详解冒泡排序
    引入冒泡排序顾名思义,就是像冒泡一样,泡泡在水里慢慢升上来,由小变大。虽然冒泡排序和冒泡并不完全一样,但却可以帮助我们理解冒泡排序。思路一组无序的数组,要求我们从小到大排列我们可以先将最大的元素放在数组末尾再将第二大的数放在数组的倒数第二个位置再将第三大......