首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态检查一个字符串是否包含多个子字符串匹配?

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

Stack Overflow用户
提问于 2016-11-03 11:09:41
回答 1查看 1.7K关注 0票数 3

我正在尝试构建一个搜索提示,返回下面最匹配的代码和注释。

代码语言:javascript
复制
    /*
    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;
    }

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-03 11:18:50

试试这个--使用Array.prototype.every来检查是否所有的搜索词都在那里,并且它们使用Array.prototype.filter过滤掉。

演示如下:

代码语言:javascript
复制
var string = ["Canna Terra PLUS 50 Litres", "Canna Vega Tent","Canna Bio Vega", "Super Canna 50 max"];

function loadSuggest(string, search) {
  var terms = search.split(' ');
  return string.filter(function(element) {
    return terms.every(function(e) {
      return element.toLowerCase().indexOf(e.toLowerCase()) !== -1;
    });
  });
}

console.log(loadSuggest(string, "Canna vega"));

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40400011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档