当前位置:首页 > JavaScript

js 实现文字搜索

2026-03-16 07:36:23JavaScript

实现文字搜索的基本方法

在JavaScript中实现文字搜索可以通过多种方式完成,常见的场景包括在字符串中搜索关键词、在DOM元素中高亮匹配内容或在数组中过滤符合条件的数据。以下是几种典型实现方法:

字符串内搜索

使用字符串方法(如includes()indexOf()或正则表达式)检查目标字符串是否包含搜索词:

const text = "Hello world, welcome to JavaScript!";
const searchTerm = "world";

// 方法1:includes()(返回布尔值)
const isFound = text.includes(searchTerm); // true

// 方法2:indexOf()(返回位置索引,未找到返回-1)
const position = text.indexOf(searchTerm); // 6

// 方法3:正则表达式(支持复杂匹配)
const regex = new RegExp(searchTerm, "gi");
const matches = text.match(regex); // ["world"]

DOM元素内容搜索

在网页中高亮或过滤匹配的文本内容:

function highlightText(searchTerm) {
  const elements = document.querySelectorAll(".content");
  elements.forEach(el => {
    const html = el.innerHTML;
    const highlighted = html.replace(
      new RegExp(searchTerm, "gi"),
      match => `<span class="highlight">${match}</span>`
    );
    el.innerHTML = highlighted;
  });
}

// 调用示例
highlightText("JavaScript");

CSS样式补充:

.highlight {
  background-color: yellow;
}

数组数据过滤

通过filter()和搜索条件筛选数组中的对象:

const data = [
  { id: 1, name: "Apple" },
  { id: 2, name: "Banana" },
  { id: 3, name: "Orange" }
];

function searchItems(keyword) {
  return data.filter(item => 
    item.name.toLowerCase().includes(keyword.toLowerCase())
  );
}

// 调用示例
const results = searchItems("an"); 
// 输出: [{id:2, name:"Banana"}, {id:3, name:"Orange"}]

模糊搜索实现

通过Levenshtein距离或拼音库支持模糊匹配:

js 实现文字搜索

// 示例:简易模糊搜索(忽略大小写和部分字符)
function fuzzySearch(text, query) {
  const pattern = query.split("").join(".*");
  const regex = new RegExp(pattern, "i");
  return regex.test(text);
}

// 调用示例
fuzzySearch("Microsoft", "mso"); // true

性能优化建议

  • 防抖处理:对输入框搜索添加防抖(如300ms延迟),避免频繁触发搜索逻辑。
  • 虚拟滚动:对大型列表搜索时,使用虚拟滚动技术减少DOM操作。
  • Web Worker:耗时的搜索任务可放入Web Worker避免阻塞UI。

根据具体需求选择合适的方法,字符串操作适合简单场景,DOM搜索适用于页面交互,数组过滤常用于数据处理。

标签: 文字js
分享给朋友:

相关文章

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现跑马灯

js实现跑马灯

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

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…