当前位置:首页 > 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实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现pdf在线预览

js实现pdf在线预览

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

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…