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

标签 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 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;
    }

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

最佳答案

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

下面的演示:

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"));

关于javascript - 如何动态检查一个字符串是否包含多个子字符串匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40400011/

相关文章:

javascript - 我如何以正确的表示法遍历数组内的对象?

JavaScript - 验证日期输入,因此它只是当前或 future

java - 在随机化的数组中使用数字随机数

Python 字符串段操作

javascript - 在 JavaScript 中替换多个字符串的好方法

javascript - JS - 当用户不在应用程序上时虚拟宠物进化

javascript - 从文本中获取第一个单词并在单击时将其添加到输入值

php - 如何在PHP中将这个MPTT数组转换成树结构?

python - 为什么 NumPy 数组优于标准库数组?

Python最简单的带有字符串的If语句不起作用