使用以下内容
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/