当前位置:首页 > VUE

使用vue实现模糊查询

2026-02-21 11:57:19VUE

使用 Vue 实现模糊查询

数据准备

确保有一个数据数组和一个用于存储搜索结果的数组。数据可以来自本地或 API 调用。

data() {
  return {
    items: ['Apple', 'Banana', 'Orange', 'Grapes', 'Mango'],
    searchQuery: '',
    filteredItems: []
  }
}

监听搜索输入

使用 v-model 绑定输入框的值到 searchQuery,并通过 watch 或计算属性监听变化。

使用vue实现模糊查询

watch: {
  searchQuery(newVal) {
    this.filterItems(newVal)
  }
}

实现模糊查询逻辑

使用 JavaScript 的字符串方法或正则表达式进行模糊匹配。以下是一个简单的不区分大小写的匹配示例:

methods: {
  filterItems(query) {
    if (!query) {
      this.filteredItems = this.items
      return
    }
    this.filteredItems = this.items.filter(item =>
      item.toLowerCase().includes(query.toLowerCase())
    )
  }
}

渲染搜索结果

在模板中显示搜索结果,使用 v-for 遍历 filteredItems

使用vue实现模糊查询

<template>
  <div>
    <input v-model="searchQuery" placeholder="Search..." />
    <ul>
      <li v-for="item in filteredItems" :key="item">{{ item }}</li>
    </ul>
  </div>
</template>

优化性能

对于大数据量,可以使用防抖(debounce)减少频繁触发搜索。

import { debounce } from 'lodash'

methods: {
  filterItems: debounce(function(query) {
    if (!query) {
      this.filteredItems = this.items
      return
    }
    this.filteredItems = this.items.filter(item =>
      item.toLowerCase().includes(query.toLowerCase())
    )
  }, 300)
}

使用第三方库增强功能

如果需要更复杂的模糊匹配(如权重、拼音搜索),可以使用 Fuse.js 等库。

import Fuse from 'fuse.js'

methods: {
  setupFuse() {
    const options = {
      keys: ['name'],
      threshold: 0.4
    }
    this.fuse = new Fuse(this.items, options)
  },
  filterItems(query) {
    if (!query) {
      this.filteredItems = this.items
      return
    }
    this.filteredItems = this.fuse.search(query).map(result => result.item)
  }
}

标签: 模糊vue
分享给朋友:

相关文章

vue实现关键词轮播

vue实现关键词轮播

Vue 实现关键词轮播 基础实现方案 使用 Vue 的 v-for 和 setInterval 实现基础轮播效果: <template> <div class="keyword…

vue实现打印二维码

vue实现打印二维码

安装二维码生成库 使用 qrcode 或 vue-qrcode 库生成二维码。通过 npm 安装: npm install qrcode vue-qrcode 生成二维码 在 Vue 组…

vue实现store

vue实现store

Vue 实现 Store 在 Vue 中,可以通过 Vuex 或 Pinia 实现全局状态管理(Store)。以下是两种主流方案的实现方法。 使用 Vuex 实现 Store Vuex 是 Vue…

vue 实现过滤

vue 实现过滤

Vue 实现过滤的方法 在 Vue 中实现过滤功能可以通过多种方式完成,包括使用计算属性、自定义过滤器、第三方库等。以下是几种常见的实现方法: 使用计算属性进行过滤 计算属性是 Vue 中最常用的过…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue实现数组

vue实现数组

Vue 实现数组操作的方法 在 Vue 中,数组的操作需要特别注意响应式的问题。Vue 提供了一些方法来确保数组的变动能够触发视图更新。 响应式数组方法 Vue 对以下数组方法进行了封装,确保它们能…