当前位置:首页 > 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实现页面截屏

使用html2canvas库实现截屏 html2canvas是一个流行的JavaScript库,可以将DOM元素转换为Canvas图像。在Vue项目中安装html2canvas: npm insta…

antd vue 实现

antd vue 实现

使用 Ant Design Vue 实现功能 Ant Design Vue 是基于 Vue.js 的 UI 组件库,提供了丰富的组件和设计规范。以下是一些常见功能的实现方法。 安装 Ant Desi…

vue实现长按

vue实现长按

Vue 实现长按功能的方法 在 Vue 中实现长按功能可以通过原生事件监听或自定义指令完成。以下是几种常见实现方式: 使用原生事件监听 通过 @mousedown 和 @mouseup 或 @tou…

vue 实现loading

vue 实现loading

Vue 实现 Loading 的方法 使用 v-if 和 v-show 控制显示 在 Vue 中可以通过 v-if 或 v-show 控制 loading 组件的显示与隐藏。v-if 会动态创建或销毁…

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

vue远离实现

vue远离实现

Vue 原理实现 Vue.js 的核心原理包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现原理的详细解析。 响应式系统 Vue 的响应式系统基于 Object.definePro…