当前位置:首页 > 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实现复制到剪贴板

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

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数:…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…