
在现代web应用中,数据筛选是一个核心功能。当我们需要从一个包含多个对象的数组中,根据某个字符串属性(例如name)进行搜索时,往往不仅仅需要简单的精确匹配或判断是否包含,还需要更灵活的模糊匹配能力。例如,用户可能输入一个词希望匹配开头,输入多个词希望匹配这些词的组合,或者输入一个词希望匹配任意位置包含该词的项。
假设我们有一个对象数组,每个对象都有一个id和name属性:
const test = [
{ id: 1, name: 'Taliparamba Co Op Hospital' },
{ id: 1, name: 'Athikkal Saw Mill,Kallai' },
{ id: 1, name: 'Marhaba Ice Plant Atholi' },
];我们需要实现以下两种核心筛选逻辑:
开头匹配或多词开头匹配:
包含匹配:
为了高效且灵活地处理上述复杂的模糊匹配需求,正则表达式是理想的选择。通过动态构建正则表达式,我们可以实现强大的搜索功能。
CA.LA
第一款时尚产品在线设计平台,服装设计系统
86
查看详情
首先,定义我们的数据数组:
const test = [
{ id: 1, name: 'Taliparamba Co Op Hospital' },
{ id: 1, name: 'Athikkal Saw Mill,Kallai' },
{ id: 1, name: 'Marhaba Ice Plant Atholi' },
];接下来,我们创建一个search函数,它接收一个数组和搜索字符串作为参数:
function search(arr, str) {
// 1. 处理空搜索字符串
if (!str || str.trim() === '') {
return arr; // 如果搜索字符串为空,返回原始数组
}
// 2. 构建正则表达式
// 将搜索字符串按空格分割成词语,并用 '.*?\b' 连接
// '.*?' 表示非贪婪匹配任意字符(0次或多次)
// '\b' 表示词边界,确保匹配的是完整的词或词的一部分
// 整体表达式以 '\b' 开头,确保第一个词从一个词的边界开始匹配
const pattern = '\b' + str.split(' ').join('.*?\b');
// 创建正则表达式对象,'i' 标志表示忽略大小写
const regexp = new RegExp(pattern, 'i');
// 3. 使用 filter 方法和 test 方法进行筛选
// filter 遍历数组的每个元素
// regexp.test(item.name) 检查元素的 name 属性是否匹配正则表达式
return arr.filter((item) => regexp.test(item.name));
}现在,我们可以使用search函数来测试我们的筛选逻辑:
// 原始数据
const test = [
{ id: 1, name: 'Taliparamba Co Op Hospital' },
{ id: 1, name: 'Athikkal Saw Mill,Kallai' },
{ id: 1, name: 'Marhaba Ice Plant Atholi' },
];
// 示例一:开头匹配
console.log("搜索 'tali':", search(test, 'tali'));
// 预期输出: [{ id: 1, name: 'Taliparamba Co Op Hospital' }]
// 示例二:多词组合匹配(开头+包含)
console.log("搜索 'tali Co OP':", search(test, 'tali Co OP'));
// 预期输出: [{ id: 1, name: 'Taliparamba Co Op Hospital' }]
// 示例三:包含匹配
console.log("搜索 'ath':", search(test, 'ath'));
// 预期输出: [
// { id: 1, name: 'Athikkal Saw Mill,Kallai' },
// { id: 1, name: 'Marhaba Ice Plant Atholi' }
// ]
// 示例四:空字符串搜索
console.log("搜索 '':", search(test, ''));
// 预期输出: 原始数组全部返回
// 示例五:不匹配
console.log("搜索 'xyz':", search(test, 'xyz'));
// 预期输出: []通过上述方法,我们能够灵活地处理J*aScript中对象数组的复杂模糊搜索需求,实现既能匹配开头又能匹配包含,甚至支持多词组合的高级筛选功能。这种基于正则表达式的方案强大且可扩展,是处理类似场景的有效工具。
以上就是J*aScript数组对象高级筛选:实现多条件模糊匹配(包含与开头匹配)的详细内容,更多请关注其它相关文章!
# 多个
# 晋州网站建设优化
# 做网站优化推广找谁
# 平台营销推广电话
# 专做短视频seo
# 店铺推广营销方案ppt
# 网站权重和排名引流推广
# 赛事推广营销神器
# 湖州网站推广好不好做
# 营销推广形式与分析
# 荆州网站推广哪家好
# 创建一个
# 可以使用
# javascript
# 多条
# 的是
# 这是一个
# 遍历
# 第一个
# ai
# 后端
# 工具
# 正则表达式
# 前端
# js
# java
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
Leaflet地图弹出窗口图片动态显示:避免缺失图标的专业指南
如何在CSS中使用伪类选择器_hover实现悬停效果
外卖小程序对接第三方配送
search中maxlength属性用法解析
C++ virtual析构函数作用_C++基类虚析构函数防止内存泄漏
J*a中逻辑运算符如何使用_逻辑与或非的基础用法讲解
CodeIgniter 3 连接 SQL Server:正确获取查询结果的教程
Highcharts雷达图径向轴数值标签实现教程
海外搜索引擎推广效果怎么样,怎么分析效果!
GBA模拟器手柄按键设置
如何用Golang优化微服务间请求性能_Golang 微服务请求性能优化方法
mysql怎么导入sql文件_mysql导入sql文件的方法与技巧
CSS布局中意外顶部空白的调试与解决:深入理解padding-top
Fedora怎么安装 Fedora Workstation安装步骤
c++中的const关键字用法大全_c++ const正确使用指南
QQ阅读小说搜索入口地址_QQ阅读小说搜索入口地址搜索在线阅读
WooCommerce购物车:强制显示所有交叉销售商品教程
Scipy Sparse CSR 矩阵非零元素行级遍历的最佳实践
智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法
荣耀magicv5怎么上手测评
构建可配置的J*aScript加权点击计数器与共享总计功能
暴风影音官网正式版_暴风影音手机版官网下载安卓
快手极速版在线体验区 快手极速版网页体验入口
lol小红书怎么|直播|?lol小红书|直播|是什么意思?
解决 Vue 3 组件未定义错误:理解 createApp 与根组件的正确使用
实现可重用自定义Python Range类
如何使用CSS Grid实现“大方块左侧,小方块右侧垂直堆叠”的水平布局
荣耀盒子应用管理技巧
抖音号升级成企业资质怎么弄?有什么好处?
J*aScript二进制处理_ArrayBuffer与Blob
C++ bind函数使用教程_C++参数绑定与函数适配器的应用
Python中处理嵌套字典与列表的数据提取与过滤教程
抖音如何解除|直播|权限绑定_抖音关闭并解绑|直播|功能的方法
QQ网站入口直接登录 QQ官方正版登录页面
电脑视频号|直播|如何分享屏幕
汽水音乐在线入口 汽水音乐网页端官方页面快速打开
PyEZ 配置提交中 RpcTimeoutError 的健壮性处理策略
如何在CSS中实现盒模型多列间距_grid-gap与padding结合
《淘宝联盟》推广自己的店铺方法
电子白板帮助菜单使用指南
智云Q3和Q2有什么升级_智云Q3与Q2手持云台功能与性能对比分析
Python定时发送QQ消息
使用VS Code作为你的个人知识管理系统
PHP中获取HTTP响应状态消息:方法与限制
如何快速去除厨房重油污? 2025年最好用的厨房清洁剂推荐
全球各国上班时间表外贸邮件时间
在Peewee中处理PostgreSQL记录重复:一站式数据摄取教程
《海贝音乐》均衡器设置方法
Python类装饰器动态修改方法时的类型提示:Mypy插件实现精确静态分析
解决C#跨线程访问XML对象的异常 安全的并发XML处理模式
2025-10-07
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。