• 前端vue-Taro框架中使用插件 ---pinyin 将城市树形分类


    1.需求 

    当我做一个获取城市的功能的时候 我发向后端返回的数据 和我想i选要的相差太多

    这样的在手机端可以滑动 并且 快捷选中的城市列表 

    目前的数据是这样的,就是一个城市数组  目前这样的数组 我要想显示我的页面实现功能是不行的

    需要是树形结够

    所以我前端需要自己将这个城市 首字 的拼音字母 首字母 分类分出来

    需要将数据变成这样 才可以实现我的需求

    后端返回的数据 不是这样 那就只能暂时前端来处理这个数据了

    但是遇到一个问题 ?

    怎么将这个数据 分类 字母?

    2. pinyin  插件的使用

    pinyin 插件 npm

    npm i pinyin

    将这个数组处理

    pinyin 中提供了 修改给你提取出第一个文字的第一个字母的大写字母的方法

    1. export const transformDataToNewFormat = (data) => { // 参数是数组
    2. const newData:any = [];
    3. // 创建包含 A 到 Z 的字母的数组
    4. const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
    5. // 初始化新数据结构
    6. alphabet.forEach((letter) => {
    7. newData.push({
    8. title: letter,
    9. list: [],
    10. });
    11. });
    12. // 将城市数据分组到对应的字母标题下
    13. data.forEach((city) => {
    14. const firstLetter = city.cityName[0].toUpperCase();
    15. // const pinyinArray = pinyin(firstLetter, {
    16. // style: pinyin.STYLE_NORMAL, // 使用普通风格的拼音
    17. // });
    18. // const pinyinFirstLetter =
    19. // pinyinArray.length > 0 ? pinyinArray[0][0][0].toUpperCase() : firstLetter;
    20. let pinyinFirstLetter;
    21. // 使用条件语句,如果城市名是 "重庆",则将首字母设置为 "C"
    22. if (city.cityName.indexOf("重庆") !== -1) {
    23. pinyinFirstLetter = "C";
    24. } else {
    25. const pinyinArray = pinyin(firstLetter, {
    26. style: pinyin.STYLE_NORMAL, // 使用普通风格的拼音
    27. });
    28. pinyinFirstLetter =
    29. pinyinArray.length > 0
    30. ? pinyinArray[0][0][0].toUpperCase()
    31. : firstLetter;
    32. }
    33. const index = alphabet.indexOf(pinyinFirstLetter);
    34. if (index !== -1) {
    35. newData[index].list.push({ id: city.id, name: city.cityName });
    36. }
    37. });
    38. return newData.filter((item) => item.list.length > 0);
    39. };

    3.总结

    这些处理按说应该是后端直接返回来比较好 毕竟 后端比前端处理好 但是咱前端得会 

  • 相关阅读:
    Linux系统编程 day03 Makefile、gdb、文件IO
    Web Worker:JS多线程的伪解药?
    排序:如何用快排思想在O(n)内查找第K大元素?
    2. 工业大数据的特点
    3. 使用tcpdump抓取rdma数据包
    力扣每日一题---2594. 修车的最少时间
    HTML5期末大作业——HTML+CSS+JavaScript平遥古城旅游景点介绍(6页)
    基于surging网络组件多协议适配的平台化发展
    一键批量按比例修改视频尺寸:视频剪辑软件使用技巧
    【PAT 1033】 To Fill or Not to Fill 贪心算法&模拟
  • 原文地址:https://blog.csdn.net/lele66688888/article/details/136685961