• 前端VUE---JS实现数据的模糊搜索


    实现背景

    因为后端实现人员列表返回,每次返回的数据量在100以内,要求前端自己进行模糊搜索

    页面实现

    因为是实时更新数据的,就不需要搜索和重置按钮

    代码

    HTML

    1. <el-dialog
    2. title="团队人员详情"
    3. :visible.sync="centerDialogVisible"
    4. width="30%"
    5. center
    6. :close-on-click-modal="false"
    7. >
    8. <el-row :gutter="20">
    9. <el-col :span="10">
    10. <el-input v-model="keyword" placeholder="请输入姓名或身份证查询">el-input>
    11. el-col>
    12. el-row>
    13. <el-table :data="filteredItems" height="350">
    14. <el-table-column property="name" label="姓名" align="center">el-table-column>
    15. <el-table-column property="idCard" label="身份证" align="center">
    16. column>
    17. el-table>
    18. <span slot="footer" class="dialog-footer">
    19. <el-button type="primary" @click="centerDialogVisible = false">确 定el-button>
    20. span>
    21. el-dialog>

    js

    1. // 计算属性
    2. computed: {
    3. filteredItems() {
    4. // if (!this.keyword) {
    5. // return this.userList
    6. // }
    7. return this.userList.filter(item =>{
    8. return item.idCard.includes(this.keyword) || item.name.includes(this.keyword)
    9. });
    10. }
    11. },

    效果

     

    注意点1:我在data中定义keyword时候第一次使用的是默认值  undefined  导致includes出来的结果是空。

    注意点2:我在返回数据中定义的身份证号是number类型,在计算时候直接报错为类型错误,不能使用includes函数。需要转换为字符串类型

    computed的实现方式很简洁,主要借助一个计算属性,在计算属性中通过搜索关键词过滤原始列表数据得到新的数据列表,并将新数据列表渲染到页面。

    值得注意的地方:
    abc.indexOf('a')的返回值是0,而abc.indexOf('')的返回值也是0。

    因此,在一开始没有输入任何数据的时候,计算属性列表filterFruitList中经过计算得到的数据和原始列表数据fruitList是一样的。


    这里最重要的是没有对原来的数据进行修改和删除

    也可以使用watch监听数据变化

    GPT提供的方法

    在Vue2中,你可以按照以下步骤实现后端返回的带有姓名和身份证信息的List进行展示,并添加静态模糊搜索和搜索重置功能。

    首先,在Vue组件中定义需要的数据变量:

    1. data() {
    2.   return {
    3.     userList: [],    // 存储后端返回的列表数据
    4.     keyword: '',     // 存储搜索关键字
    5.     filteredList: [] // 存储搜索结果数据
    6.   };
    7. }

    然后,使用生命周期钩子函数 mounted() 在组件加载时获取后端数据:

    1. mounted() {
    2.   // 调用后端API获取数据(示例)
    3.   yourApi.getUserList().then(response => {
    4.     this.userList = response.data;
    5.   });
    6. }

    在模板中,你可以使用一个输入框和一个搜索按钮以及一个重置按钮:

    1. <input type="text" v-model="keyword" placeholder="请输入搜索关键字">
    2. <button @click="search">搜索button>
    3. <button @click="reset">重置button>

    接下来,在Vue组件中实现静态模糊搜索和搜索重置功能的两个方法:

    1. methods: {
    2.   search() {
    3.     if (this.keyword.trim() === '') {
    4.       this.filteredList = this.userList;
    5.     } else {
    6.       const keywordLowerCase = this.keyword.toLowerCase();
    7.       this.filteredList = this.userList.filter(user => {
    8.         const nameMatch = user.name.toLowerCase().includes(keywordLowerCase);
    9.         const idCardMatch = user.idCard.toLowerCase().includes(keywordLowerCase);
    10.         return nameMatch || idCardMatch;
    11.       });
    12.     }
    13.   },
    14.   reset() {
    15.     this.keyword = '';
    16.     this.filteredList = this.userList;
    17.   }
    18. }

    在 `search` 方法中,首先判断关键字是否为空,如果为空则直接将 `filteredList` 设置为原始列表数据 `userList`,否则根据关键字对 `userList` 进行静态模糊搜索,并将结果赋值给 `filteredList`。

    在 `reset` 方法中,将关键字重置为空字符串,并将 `filteredList` 设置为原始列表数据 `userList`。

    最后,在模板中使用 `v-for` 遍历 `filteredList`,展示搜索结果:

    1. <ul>
    2.   <li v-for="user in filteredList" :key="user.id">
    3.     {{ user.name }} - {{ user.idCard }}
    4.   li>
    5. ul>

    综上所述,你可以按照以上步骤,使用Vue2实现后端返回的列表数据的展示,并添加静态模糊搜索和搜索重置功能。

  • 相关阅读:
    python数据分析——聚类
    bp神经网络的主要功能,一文搞定bp神经网络
    [Spring Boot]09 Spring Boot集成和使用Redis
    130. 被围绕的区域
    torch_vision(二):模型和预训练weight模块 torchvision.models
    深入剖析Buddy 内存管理机制(上)
    浅谈智能变电站自动化系统的应用与产品选型
    蘑菇云「行空板Python入门教程」第十课:多节点智慧农业系统
    小程序自定义tabbar
    Word docx转html和markdown
  • 原文地址:https://blog.csdn.net/a99101/article/details/132978728