当前位置:首页 > JavaScript

js 实现搜索

2026-03-15 09:17:45JavaScript

实现 JavaScript 搜索功能

基于数组的简单搜索

使用 Array.filter()Array.includes() 方法对本地数据进行搜索。

const data = ['apple', 'banana', 'cherry'];
const searchTerm = 'app';

const results = data.filter(item => 
  item.toLowerCase().includes(searchTerm.toLowerCase())
);
console.log(results); // ['apple']

DOM 元素搜索

通过遍历 DOM 元素实现页面内容搜索。

function searchDOM(searchText) {
  const elements = document.querySelectorAll('.searchable');
  elements.forEach(el => {
    const text = el.textContent.toLowerCase();
    el.style.display = text.includes(searchText.toLowerCase()) 
      ? 'block' 
      : 'none';
  });
}

使用正则表达式

实现更灵活的匹配模式。

const regex = new RegExp('\\b' + searchTerm, 'i');
const found = data.filter(item => regex.test(item));

防抖优化

为输入框添加防抖函数减少频繁搜索。

function debounce(func, delay) {
  let timeout;
  return function() {
    clearTimeout(timeout);
    timeout = setTimeout(() => func.apply(this, arguments), delay);
  };
}

const searchInput = document.getElementById('search');
searchInput.addEventListener('input', debounce(function() {
  searchDOM(this.value);
}, 300));

异步 API 搜索

结合 AJAX 或 Fetch 实现远程搜索。

async function searchAPI(query) {
  try {
    const response = await fetch(`/api/search?q=${encodeURIComponent(query)}`);
    return await response.json();
  } catch (error) {
    console.error('Search failed:', error);
    return [];
  }
}

高级搜索功能

实现多条件复合搜索。

function advancedSearch(items, filters) {
  return items.filter(item => {
    return Object.entries(filters).every(([key, value]) => {
      if (!value) return true;
      return item[key].toString().toLowerCase()
             .includes(value.toLowerCase());
    });
  });
}

搜索高亮显示

使用标记显示匹配部分。

js 实现搜索

function highlightText(text, search) {
  const regex = new RegExp(`(${search})`, 'gi');
  return text.replace(regex, '<mark>$1</mark>');
}

这些方法可以根据具体需求组合使用,构建从简单到复杂的不同搜索功能实现方案。

标签: js
分享给朋友:

相关文章

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…