Javascript 使用JS/jQuery进行字符串搜索/模糊匹配?

Javascript 使用JS/jQuery进行字符串搜索/模糊匹配?,javascript,jquery,Javascript,Jquery,完全在JS中,没有服务器后端。我需要允许用户搜索,然后显示匹配名称的列表。我正在使用jQueryUIAutoComplete,但需要一些JS来过滤结果 给定一组名称: Bob Hope James Jones Steve Jobs Larry McBridge 给出了一个像Bo这样的搜索词 我怎样才能让鲍勃·霍普回来呢 给定类似于b的搜索词: 除了詹姆斯·琼斯,我怎么能得到全部 有比较两个字符串的简单JS吗?谢谢也许我误解了您的意思(考虑到上述答案的复杂性),但我想出了使用jQuery的方法。

完全在JS中,没有服务器后端。我需要允许用户搜索,然后显示匹配名称的列表。我正在使用jQueryUIAutoComplete,但需要一些JS来过滤结果

给定一组名称:

Bob Hope
James Jones
Steve Jobs
Larry McBridge
给出了一个像Bo这样的搜索词

我怎样才能让鲍勃·霍普回来呢

给定类似于b的搜索词:

除了詹姆斯·琼斯,我怎么能得到全部

有比较两个字符串的简单JS吗?谢谢

也许我误解了您的意思(考虑到上述答案的复杂性),但我想出了使用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" />

使用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);

所以为了测试单个字符串if(stringToSearch.toLowerCase().indexOf(stringQuery.toLowerCase())!=-1{alert(“match”);}为了未来读者的利益,我实现了一个库:@uohzxela-为了我自己的利益,我来这里是为了避免使用库(已经受够了)。此外,快速浏览一下您的点击率,它是为一个非常特定的用例而设计的,不太可能帮助许多开发人员
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"]
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);