| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import {pinyin} from "pinyin-pro";
- class Tools {
- private static instance: Tools;
- static getInstance() {
- if (!this.instance) {
- this.instance = new Tools();
- }
- return this.instance;
- }
- /**
- * 把list结构转成 map 首字母结构
- * @param {Object} list
- */
- listToMap(list: any[]) {
- let map = new Map();
- let reg = /[A-Z]/;
- let other = '-';
- list.forEach((item, index) => {
- if (item && item.name) {
- //拼音的首字母
- let pyf = pinyin(item.name).substring(0, 1).toUpperCase()
- //不是26个字母,用-代替
- if (!reg.test(pyf)) {
- pyf = other
- }
- let tempList = map.get(pyf) ? map.get(pyf) : [];
- tempList.push({
- id: item.id,
- name: item.name,
- avatar: item.avatar,
- type: item.type,
- })
- map.set(pyf, tempList);
- }
- })
- let res = new Map();
- //从新排序
- for (let i = 0; i < 26; i++) {
- let n = String.fromCharCode(65 + i)
- let obj = map.get(n);
- if (obj) {
- res.set(n, obj)
- }
- }
- if (map.get(other)) {
- res.set(other, map.get(other))
- }
- return res;
- }
- }
- export default Tools.getInstance()
|