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

2023-09-18 15:08:32

实现背景

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

页面实现

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

代码

HTML

     <el-dialog
        title="团队人员详情"
        :visible.sync="centerDialogVisible"
        width="30%"
        center
        :close-on-click-modal="false"
      >
        <el-row :gutter="20">
          <el-col :span="10">
            <el-input v-model="keyword" placeholder="请输入姓名或身份证查询"></el-input>
          </el-col>
        </el-row>
        <el-table :data="filteredItems" height="350">
          <el-table-column property="name" label="姓名" align="center"></el-table-column>
          <el-table-column property="idCard" label="身份证" align="center"></el-table- 
     column>
        </el-table>
        <span slot="footer" class="dialog-footer">
          <el-button type="primary" @click="centerDialogVisible = false">确 定</el-button>
        </span>
      </el-dialog>

js

 // 计算属性
  computed: {
    filteredItems() {
      // if (!this.keyword) {
      //   return this.userList
      // }
    return this.userList.filter(item =>{
      return item.idCard.includes(this.keyword) || item.name.includes(this.keyword)
      });
  }
  },

效果

 

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

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

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

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

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


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

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

GPT提供的方法

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

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

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

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

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

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

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

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

methods: {
  search() {
    if (this.keyword.trim() === '') {
      this.filteredList = this.userList;
    } else {
      const keywordLowerCase = this.keyword.toLowerCase();
      this.filteredList = this.userList.filter(user => {
        const nameMatch = user.name.toLowerCase().includes(keywordLowerCase);
        const idCardMatch = user.idCard.toLowerCase().includes(keywordLowerCase);
        return nameMatch || idCardMatch;
      });
    }
  },
  reset() {
    this.keyword = '';
    this.filteredList = this.userList;
  }
}

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

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

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

<ul>
  <li v-for="user in filteredList" :key="user.id">
    {{ user.name }} - {{ user.idCard }}
  </li>
</ul>

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

更多推荐

宏任务,微任务,事件循环event loop与promise、setTimeout、async、nextTick【超详细示例讲解】

目录js单线程宏任务:在主线程上排队执行的任务,顺序执行宏任务macrotask:setTimeout,setInterval定时事件,Ajax,DOM事件,script脚本的执行、I/O操作、UI渲染等。微任务:不进入主线程、而进入"微任务列表"的任务微任务microtask(异步):Promise、async/aw

聚合支付备案对聚合支付系统及安全有何要求?

聚合支付备案,依据《收单外包服务机构备案管理办法》《收单外包服务机构自律规范》《关于加强收单外包服务市场规范管理的意见》等政策,对聚合支付系统及安全要求如下:对聚合支付机构要求一是聚合支付机构应当具备必要的、独立的系统、设施和技术,提供安全、稳定且可持续的聚合支付技术服务。其中,独立的系统是指聚合支付系统逻辑独立并与其

芯科科技第二代平台的所有蓝牙片上系统均可支持蓝牙技术联盟的新功能和新标准

中国,北京-2023年9月21日–致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商SiliconLabs(亦称“芯科科技”,NASDAQ:SLAB),今日宣布其支持蓝牙技术联盟(BluetoothSIG)针对蓝牙网状网络(BluetoothMesh)实现的新功能增强,以及他们新的网络照明控制(NLC)标准,

【从0学习Solidity】17. 库合约 站在巨人的肩膀上

【从0学习Solidity】17.库合约站在巨人的肩膀上博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发,期待与您一起在移动开发的世界中,不断进步和创造!本文收录于不写代码没饭吃的学习汇报系

RHCE---时间服务器

文章目录目录文章目录前言一.安装时间服务器软件初始化系统二.配置时间服务器的服务端三.配置时间服务器的客户端四.远程连接服务器前言Linux中的时间服务器是指NTP服务器,NTP是NetworkTimeProtocol的缩写,即网络时间协议。NTP服务器可以提供精确的时间信息,从而使得网络上的所有设备都能够同步时间,确

表名注解/主键注解/字段注解/乐观锁注解[MyBatis-Plus系列] - 第486篇

悟纤:师傅,脑瓜疼~师傅:徒儿这是怎么了?​悟纤:师傅,你了解冷暴力吗?师傅:略懂略懂。悟纤:那冷暴力是怎么定义的?师傅:冷暴力是暴力的一种,其表现形式多为通过冷淡、轻视、放任、疏远和漠不关心,致使他人精神上和心理上受到侵犯和伤害。冷暴力是目前为社会公认的会对行为相对人造成心理、精神伤害的行为。悟纤:有点抽象呢。师傅:

爬虫代理在数据采集中的应用详解

随着互联网技术的不断发展,数据采集已经成为了各个行业中必不可少的一项工作。在数据采集的过程中,爬虫代理的应用越来越受到了重视。本文将详细介绍爬虫代理在数据采集中的应用。什么是爬虫代理?爬虫代理是指利用代理服务器来隐藏真实的IP地址,从而保护数据采集者的隐私和安全。在数据采集中,使用爬虫代理可以带来以下几个好处:防止被封

QT之QListWidget的介绍

QListWidget常用成员函数1、成员函数介绍2、例子显示图片和按钮的例子1、成员函数介绍1)QListWidget(QWidget*parent=nullptr)构造函数,创建一个新的QListWidget对象。2)voidaddItem(constQString&label)在列表末尾添加一个项目,项目标签为l

【python百炼成魔】Python循环语句:嵌套循环

前言文章目录前言嵌套循环嵌套的用途嵌套循环案例1.输出一个三行四列的矩形2.打印直角三角形3.写一个九九乘法表总结嵌套循环Python中的嵌套循环是指在一个循环体内部包含另一个循环。通过嵌套循环,我们可以在外部循环的每次迭代中,执行内部循环的所有迭代。嵌套循环可以帮助我们处理一些复杂的问题。嵌套循环的逻辑:forxin

算法leetcode|76. 最小覆盖子串(rust重拳出击)

文章目录76.最小覆盖子串:样例1:样例2:样例3:提示:进阶:分析:在这里插入图片描述题解:rust:go:c++:python:java:76.最小覆盖子串:给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。注意:对于t中重复字符,我们寻找的子

外包干了2个月,技术退步明显...

先说一下自己的情况,大专生,19年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年8月份,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试,已经让我变得不思进取,谈了2年的女朋友也因为我的心态和工资和我分手了。于是,我决定要改变现状,冲击下大厂。刚开始准备

热文推荐