使用JS/jQuery进行字符串搜索/模糊匹配
Using JS/jQuery to do string search/fuzzy matching?
完全在JS中,没有服务器后端。我需要允许用户搜索,然后显示匹配的名称列表。我使用jQuery UI自动完成,但需要一些JS来过滤结果。
给定一个数组名称:
Bob Hope
James Jones
Steve Jobs
Larry McBridge
给定Bo
这样的搜索词我怎样才能让鲍勃·霍普回来
给定一个搜索词b:
我怎么能得到除了詹姆斯·琼斯以外的所有人呢?
任何简单的JS比较两个字符串?由于
var names = ["Bob Hope","James Jones","Steve Jobs","Larry McBridge"]
var query = "bo"
var results = $(names)
.map(function(i,v){
if(v.toLowerCase().indexOf(query.toLowerCase())!=-1){return v}
}).get()
// results is ["Bob Hope"]
也许我误解了你(考虑到上述答案的复杂性),但我想到了这个使用jQuery。每次按下一个键(当输入有焦点时),它都会搜索页面上的所有li
元素,并查找它们是否包含搜索词。
下面是HTML:
<ul><li>Bob Hope</li>
<li>James Jones</li>
<li>Steve Jobs</li>
<li>Larry McBridge</li></ul><br>
Search: <input id="search" length="24" />
这是你的jQuery:
$("#search").keyup(function(){
$("li").hide();
var term = $(this).val();
$("li:contains('" + term + "')").show();
});
使用Ivan的答案,但对ES6进行了更改:
var names = ["Bob Hope","James Jones","Steve Jobs","Larry McBridge"];
function findIn(s, list){
return list.filter((v) => v.toLowerCase().indexOf(s.toLowerCase()) != -1 );
}
findIn('bo', names);
相关文章:
- 模糊事件的Javascript测试
- 用程序搜索JQuery数据表中的文本
- 在html Select中添加搜索
- Ajax Live搜索发布到Laravel视图
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- 学生搜索项目jquery/javascript
- 用于搜索的聚合物嵌套绑定
- 在javascript中搜索具有重复值的两个数组中的匹配值
- 将事件聚焦/模糊在可编辑内容的元素上
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 使用javascript搜索具有用户输入的数组
- 在Sinatra(ruby)中实现JS模糊搜索
- 模糊搜索(fuse.js)使用XML而不是JSON
- 如何在Meteor中实现实时搜索,而不会在每个字母后出现文本输入模糊
- Elasticsearch多字段模糊搜索未首先返回精确匹配
- Javascript模糊处理程序,它重用变量名,使搜索和替换无效
- JavaScript/List.js:实现模糊搜索
- 模糊搜索深度数组只对某些属性
- AngularJS过滤模糊搜索
- 使用JS/jQuery进行字符串搜索/模糊匹配