javascript - 部分字符串搜索 javascript 对象数组以查找针

标签 javascript jquery

使用以下内容

haystack = [{'id':'73','name':'Elvis'},{'id':'45','name':'Beatles'}, etc.]

我想执行搜索,通过搜索“elv”或“Elv”(因此,不区分大小写的搜索)来找到 Elvis。结果应以数组形式返回,从而允许从我的搜索中返回不止一根针。

我的解决方案是将我的指针转换为小写、无空格,并使用 for 循环遍历我的干草堆,检查小写/无空格名称。但我怀疑还有其他更资源友好的方法(我想知道是否有更好的方法,以便我可以增强我的技能/知识)

我曾想过使用 jQuery grep 或 inArray 但两者似乎都对其比较很严格。 array.filter() 是另一个想法。但迄今为止各种尝试都失败了。

谢谢

最佳答案

不确定您尝试过什么,但 .filter() 应该有效。确保搜索字符串和搜索项目的名称均小写。

var searchTerm = 'Elv'.toLowerCase();
var results = haystack.filter(function(item){
    return item.name.toLowerCase().indexOf(searchTerm) > -1;
});
<小时/>

或者您可以使用正则表达式进行比较

var searchTerm = 'Elv',
    search = new RegExp(searchTerm, 'gi');

var results = haystack.filter(function(item){
    return item.name.match(search);
});

关于javascript - 部分字符串搜索 javascript 对象数组以查找针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35923424/

相关文章:

javascript - 如何使用 RxJS 显示一个 "user is typing"指标?

javascript - 如何测试不是模块并在调用后立即运行的 Node.JS 脚本?

javascript - 具有多个下拉菜单的子菜单关闭延迟

jquery - 导航与CSS过渡

javascript - Javascript onclick 的奇怪行为

javascript - jQuery - 未选中的单选按钮不返回值

jquery - 将 jquery backgroundColor 换成背景图片?

javascript - 循环成对的 jQuery 对象

jquery - stopPropagation 不适用于 chrome+live 方法

javascript - IFrame站点的访问URL