Vue 模拟通讯录列表用 js-pinyin 获取汉字首字母,形成字母索引

简介: Vue 模拟通讯录列表用 js-pinyin 获取汉字首字母,形成字母索引

效果图:

流程 :

  1. 获取数据
  2. 提取首个字的拼音的首个字母
  3. 排序并分组

此功能用到Vant组件的IndexBar 索引栏

1. 安装

js-pinyin npm地址

npm install js-pinyin --save

2. 引入及使用

<template>
  <div class="wrap">
    <van-index-bar>
      <div v-for="item in filterData" :key="item.letter">
        <van-index-anchor :index="item.letter"></van-index-anchor>
        <div
          class="content"
          v-for="row in item.list"
          :key="row.id"
          @click="go(row.id)"
        >
          {{ row.name }}
        </div>
      </div>
    </van-index-bar>
  </div>
</template>
<script>
export default {
  name: "test",
  data() {
    return {
      filterData: [], // 处理后的 待渲染数据
       // 模拟数据
      mapData: [
        {
          id: 1,
          name: "万景千言",
        },
        {
          id: 2,
          name: "八里沟11",
        },
        {
          id: 2,
          name: "八里沟1",
        },
        {
          id: 2,
          name: "八里沟",
        },
        {
          id: 17,
          name: "京华园",
        },
        {
          id: 21,
          name: "平原博物馆",
        },
        {
          id: 38,
          name: "金牛湖野生动物王国",
        },
      ],
    };
  },
  created() {
    this.test();
  },
  methods: {
    test() {
      // 安装使用 js-pinyin 插件,获取待处理字段的拼音
      const pinyin = require("js-pinyin");
      this.mapData.map((item) => {
        item.pinyin = pinyin.getFullChars(item.name);
      });
      let provice = {};
      this.mapData.map((item) => {
        const Initials = item.pinyin[0].toUpperCase();
        // 如果对象里有当前字母项则直接 push 一个对象,如果没有则创建一个新的键并赋值;
        if (provice[Initials]) {
          provice[Initials].push(item);
        } else {
          provice[Initials] = [item];
        }
      });
      // 将数据转为数组,并按字母顺利排列
      this.filterData = [];
      for (let key in provice) {
        const obj = { letter: key, list: provice[key] };
        this.filterData.push(obj);
      }
      this.filterData.sort((a, b) => {
        return a.letter.localeCompare(b.letter);
      });
    },
  },
};
</script>
目录
打赏
0
0
0
0
1
分享
相关文章
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
90 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
JavaScript框架React vs. Vue:一场性能与易用性的较量
JavaScript框架React vs. Vue:一场性能与易用性的较量
117 0
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
96 4
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
369 0
|
6月前
|
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
138 0
前端JS实现密码校验键盘横竖、26字母、相同字母、相同数字、密码包含用户名、数字 字母不能连续 不能相同三个、不能横向 竖向 连续三个 包含字符、不能有中文符号
该 JavaScript 代码实现了一个严格的密码校验功能,确保密码满足多种安全要求,包括长度、字符类型、不包含中文及特殊字符、不与用户名相似等。通过多个辅助函数,如 `validateFormat` 检查密码格式,`isHasChinaCharFun` 检测中文符号,`getCharAll` 生成键盘组合,以及 `checkPasswordFun` 综合验证密码的有效性和安全性。此工具对于提高用户账户的安全性非常有用。
227 0
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
|
6月前
|
js学习--商品列表商品详情
js学习--商品列表商品详情
69 2
|
6月前
|
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
112 1
vue尚品汇商城项目-day04【24.点击搜索按钮跳转后的页面商品列表、平台售卖属性动态展示(开发Search组件)】
VUE 开发——Node.js学习(一)
VUE 开发——Node.js学习(一)
146 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等