[英]How to dynamically check if a string contain more than one substring 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"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.