当前位置:首页 > JavaScript

js实现搜索功能

2026-04-03 18:27:08JavaScript

js实现搜索功能

js实现搜索功能

实现搜索功能的基本思路

在JavaScript中实现搜索功能通常涉及监听用户输入、过滤数据并动态更新显示结果。以下是几种常见实现方式:

基于数组的简单搜索

const data = ['苹果', '香蕉', '橙子', '葡萄'];
const searchInput = document.getElementById('search-input');
const resultsContainer = document.getElementById('results');

searchInput.addEventListener('input', (e) => {
  const searchTerm = e.target.value.toLowerCase();
  const filteredResults = data.filter(item => 
    item.toLowerCase().includes(searchTerm)
  );
  resultsContainer.innerHTML = filteredResults.join('<br>');
});

对象数组的搜索

const products = [
  { id: 1, name: '笔记本电脑', category: '电子产品' },
  { id: 2, name: '智能手机', category: '电子产品' },
  { id: 3, name: '咖啡机', category: '家电' }
];

searchInput.addEventListener('input', (e) => {
  const term = e.target.value.toLowerCase();
  const filtered = products.filter(product => 
    product.name.toLowerCase().includes(term) || 
    product.category.toLowerCase().includes(term)
  );
  displayResults(filtered);
});

使用正则表达式实现高级搜索

function searchWithRegex(data, pattern) {
  const regex = new RegExp(pattern, 'i');
  return data.filter(item => regex.test(item.name));
}

实现搜索建议/自动完成

const suggestions = document.getElementById('suggestions');

searchInput.addEventListener('input', debounce(() => {
  const term = searchInput.value.trim();
  if(term.length > 0) {
    fetch(`/api/suggest?q=${term}`)
      .then(res => res.json())
      .then(data => showSuggestions(data));
  }
}, 300));

function showSuggestions(items) {
  suggestions.innerHTML = items.map(item => 
    `<div class="suggestion">${item}</div>`
  ).join('');
}

使用Web Workers处理大数据量搜索

// 主线程
const worker = new Worker('search-worker.js');
worker.onmessage = (e) => {
  displayResults(e.data);
};

searchInput.addEventListener('input', (e) => {
  worker.postMessage({
    data: largeDataset,
    term: e.target.value
  });
});

// search-worker.js
self.onmessage = (e) => {
  const { data, term } = e.data;
  const results = data.filter(item => 
    item.name.includes(term)
  );
  self.postMessage(results);
};

实现模糊搜索

function fuzzySearch(items, term) {
  const searchTerm = term.toLowerCase();
  return items.filter(item => {
    const itemStr = Object.values(item).join(' ').toLowerCase();
    return itemStr.includes(searchTerm);
  });
}

注意事项

  • 对用户输入进行清理和验证,防止XSS攻击
  • 对于大型数据集考虑分页或虚拟滚动
  • 使用防抖(debounce)或节流(throttle)优化频繁触发的事件
  • 移动端需要特别处理虚拟键盘的行为
  • 提供清晰的搜索反馈和无结果提示

以上方法可以根据具体需求组合使用,构建适合不同场景的搜索功能。

标签: 搜索功能js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…