Javascript 如何动态检查一个字符串是否包含多个子字符串匹配?

Javascript 如何动态检查一个字符串是否包含多个子字符串匹配?,javascript,arrays,string,match,Javascript,Arrays,String,Match,我试图建立一个搜索建议,返回的最佳匹配下面是我的代码与评论 /* string = {"Canna Terra PLUS 50 Litres", "Canna Vega Tent", "Canna Bio Vega", "Super Canna 50 max" } search = "Canna Vega" this can be dynamic ranging up to 4 words search term The expected return arr

我试图建立一个搜索建议,返回的最佳匹配下面是我的代码与评论

    /*
    string = {"Canna Terra PLUS 50 Litres", "Canna Vega Tent", "Canna Bio Vega", "Super Canna 50 max" }
    search = "Canna Vega"  this can be dynamic ranging up to 4 words search term

    The expected return array would be

    {"Canna Vega Tent", "Canna Bio Vega" }

    */

    function loadSuggest(string,search){

        if( search.length < 3 ){ 
            return; // suggest is loaded only if the search term is more than 3 letter
        }

        var terms = search.split(' '); // split the search term with spaces
        var i;

        for(i = 0; i < string.length; i++){

            /*
            how to dynamically check and return
            the results containing more than one term match ?
            I have tried indexOf() but that fails with dynamic number of words matching
            */

        }
        return resultArray;
    }
/*
字符串={“美人蕉地加50升”,“美人蕉织女星帐篷”,“美人蕉生物织女星”,“超级美人蕉50最大值”}
search=“Canna Vega”这可以是动态的,最多4个单词的搜索词
预期的返回数组将是
{“美人蕉织女星帐篷”、“美人蕉生物织女星”}
*/
函数loadSuggest(字符串,搜索){
如果(search.length<3){
return;//仅当搜索词超过3个字母时才加载建议
}
var terms=search.split(“”);//用空格拆分搜索词
var i;
对于(i=0;i

我在代码注释中提到,我正在尝试与包含搜索词中所有单词的字符串进行最佳匹配。

尝试此操作-使用
Array.prototype.every
检查是否存在所有搜索词,并使用
Array.prototype.filter

演示如下:

var string=[“美人蕉地加50升”、“美人蕉织女星帐篷”、“美人蕉生物织女星”、“超级美人蕉50最大值”];
函数loadSuggest(字符串,搜索){
var术语=search.split(“”);
返回string.filter(函数(元素){
返回条件。每个(函数(e){
返回元素.toLowerCase().indexOf(e.toLowerCase())!=-1;
});
});
}

log(loadSuggest(字符串,“美人蕉”)“abcdefabcfjbjabc”,您希望找到“abc”有3个匹配项。Right@void不,例如字符串“abc bbc ccf efg”搜索词“abc ccf”,我想知道该字符串中是否同时存在“abc”和“ccf”。这是一个完美的答案,效果很好,我接受了你的答案,非常感谢。