我已经为以下几行javascript对象构建了一个搜索函数:
使用javascript中内置的字符串search()函数即可正常工作。
if(objectarray[i].text.search(userstring)>=0){
filteredarray.push(currentobject)
};
现在,客户希望按照以下方式进行更高级的搜索:
查找文本包含的对象(x1或x2)和(x3或x4或x5)
其中每个x都是一个单词,当满足上述条件时,对象将被推入过滤后的集合中。
是否有内置函数可以处理这种复杂的布尔语句?
答案 0 :(得分:2)
使用this question的答案
我接受这个:
var usersearchstring = "(x1 or x2) and (x3 or x4 or x5)";
并使用此转换它:
usersearchstring = usersearchstring.replace(/[-\w]+/g, "targetstring.toLowerCase().search('$&')>=0");
进入这个:
(targetstring.toLowerCase().search('x1')>=0 or targetstring.toLowerCase().search('x2')>=0) and (targetstring.toLowerCase().search('x3')>=0 or targetstring.toLowerCase().search('x4')>=0 or targetstring.toLowerCase().search('x5')>=0)
N.B。将搜索函数返回的数字响应转换为布尔值
,需要'> = 0'