新闻中心

如何用j*ascript实现搜索功能_如何过滤数据?

2025-12-15
浏览次数:
返回列表
J*aScript搜索功能核心是监听input事件实时获取关键词,遍历数据并模糊匹配字段(支持大小写、空格、中文),可扩展拼音匹配与防抖优化,渲染时避免重复创建节点。

如何用javascript实现搜索功能_如何过滤数据?

用 J*aScript 实现搜索功能,核心就是“监听输入 → 拿到关键词 → 遍历数据 → 筛出匹配项”。过滤本身不难,关键是写得清晰、可维护,还能应对常见需求(比如大小写、空格、中文)。

监听输入并实时获取关键词

一般绑定 input 事件(不是 keyup),因为它能捕获所有输入变化(包括粘贴、删除、语音输入等):

const input = document.getElementById('searchInput');
const data = [
  { name: '张三', city: '北京' },
  { name: '李四', city: '上海' },
  { name: '王五', city: '广州' }
];

input.addEventListener('input', function() {
  const keyword = this.value.trim();
  const filtered = filterData(data, keyword);
  renderList(filtered); // 把结果展示出来
});

基础过滤:用 includes 或 indexOf 匹配字符串

对每个字段做模糊匹配,推荐用 includes()(更直观)或 toLowerCase().includes()(忽略大小写):

新快购物系统 新快购物系统

新快购物系统是集合目前网络所有购物系统为参考而开发,不管从速度还是安全我们都努力做到最好,此版虽为免费版但是功能齐全,无任何错误,特点有:专业的、全面的电子商务解决方案,使您可以轻松实现网上销售;自助式开放性的数据平台,为您提供充满个性化的设计空间;功能全面、操作简单的远程管理系统,让您在家中也可实现正常销售管理;严谨实用的全新商品数据库,便于查询搜索您的商品。

新快购物系统 0 查看详情 新快购物系统

function filterData(list, keyword) {
  if (!keyword) return list; // 输入为空,返回全部

  return list.filter(item => {
    const text = `${item.name}${item.city}`.toLowerCase();
    return text.includes(keyword.toLowerCase());
  });
}

  • 拼接多个字段再查,适合简单场景;也可分别查 name 和 city,用 || 连接
  • toLowerCase() 统一大小写,避免 “北京” 找不到 “beijing”
  • 注意先 trim(),防止用户输空格导致匹配失败

进阶过滤:支持中文拼音首字母或分词逻辑

includes 对中文友好,但搜“bj”找不到“北京”。如需拼音支持,可用轻量库 pinyin-pro(无依赖):

// npm install pinyin-pro  
import { pinyin } from 'pinyin-pro';

function matchWithPinyin(item, keyword) {
  const namePinyin = pinyin(item.name, { toneType: 'none', type: 'array' }).join('');
  const cityPinyin = pinyin(item.city, { toneType: 'none', type: 'array' }).join('');
  const fullText = `${item.name}${item.city}${namePinyin}${cityPinyin}`.toLowerCase();
  return fullText.includes(keyword.toLowerCase());
}

  • 把汉字转成无音调拼音(如“北京”→“beijing”),再合并搜索
  • 不用强求完整分词,首字母或全拼覆盖大部分用户输入习惯
  • 如数据量大(>1000 条),建议防抖(debounce),避免频繁过滤

渲染结果:只更新 DOM,别重复创建节点

过滤后别每次 innerHTML = '' + newHTML,容易丢失焦点或状态。推荐用 DocumentFragment 或清空后 append:

function renderList(list) {
  const container = document.getElementById('resultList');
  container.innerHTML = ''; // 清空旧内容

  list.forEach(item => {
    const div = document.createElement('div');
    div.textContent = `${item.name} — ${item.city}`;
    container.appendChild(div);
  });
}

  • 如果列表带点击操作(如选中),建议加 data-id 属性,方便后续处理
  • 空结果时显示“未找到”,提升体验
  • 数据少直接渲染;数据多考虑虚拟滚动或分页

基本上就这些。搜索本质是“字符串匹配 + 视图同步”,重点不在炫技,而在适配真实输入习惯和保持响应流畅。

以上就是如何用j*ascript实现搜索功能_如何过滤数据?的详细内容,更多请关注其它相关文章!


# word  # 也可  # 中有  # 遍历  # 找不到  # 如何用  # 新快  # 北京  # 搜索功能  # 购物系统  # red  # 上海  # ai  # app  # npm  # html  # java  # javascript  # 关键词  # 网站优化页面权重  # 株洲网站建设推荐  # 东至seo优化公司电话  # 湖南网站建设招聘  # seo和sem的区别与联黑帽seo  # 免费给网站外部推广  # 寻找泉州seo策划公司  # 广州喜来登酒店网站建设  # 济南seo哪家好  # 璧山县爱采购关键词排名 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容  邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧  uc浏览器网页版入口 uc浏览器网页版最新网址  Django模型中自动计算可用余额的实现方法  Tabulator表格中精确实现日期时间排序的指南  Python大型XML文件高效流式解析教程  韩剧圈正版入口页面_韩剧圈官网登录链接  必由学在线入口 必由学网页版快速登录入口  解决移动端滚动问题的overflow属性应用指南  R星幕后开发视频泄露 包含《GTA6》等多款大作  c++ 命名空间怎么用 c++ namespace使用指南  J*aScript类型检查_j*ascript代码规范  Python异步编程实践:使用Binance API构建实时交易数据流  sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置  C++ explicit关键字防止隐式转换_C++构造函数安全规范  在WordPress中通过REST API获取BasicAuth保护的远程文章  Log4j Console Appender性能瓶颈与高并发优化策略  Go语言中JSON数据解码与字段访问指南  Django表单提交验证失败后保持字段值不刷新  GemBox Document HTML转PDF垂直文本渲染问题及解决方案  迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法  天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】  小米汽车11月交付量突破40000台!雷军:将继续努力  抖音DOU+怎么投最有效 抖音付费推广的ROI提升技巧  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  抖音网页版企业服务中心登录入口_抖音网页版企业登录平台  AI抖音网页版免费视频入口 AI抖音网页端最新视频实时观看  c++如何使用Meson构建系统_c++比CMake更快的构建工具  解决 MongoDB 聚合查询中对象数组 _id 匹配问题  12306选座系统怎么选连座_12306选座多人连坐操作方法  如何将HTML表格多行数据保存到Google Sheets  CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色  Django表单验证失败时保留用户输入数据的最佳实践  单射、满射与双射的关系 一文理清所有逻辑  俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口  b站怎么取消点赞_b站点赞取消操作方法  J*aScript中在Map循环中检测并处理空数组元素  解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南  优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题  怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除  企业名称高精度匹配:N-gram方法在结构相似性分析中的应用  Mac怎么查看崩溃日志_Mac控制台错误报告分析  lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法  消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技  PDF文件体积过大处理_PDF压缩技巧详解  mc.js游戏直达 mc.js网页免下载版本秒进地址  解决 Vaadin 8 中大文件音频播放与定位时出现的 IOException  Selenium Python中处理点击后新窗口加载冻结问题的策略与实践  印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】  Win11怎么关闭快速启动_Win11彻底关机设置教程 

搜索