2

我已经为一组 javascript 对象构建了一个搜索函数,如下所示:

  1. 用户在表单输入框中输入文本
  2. 循环遍历对象数组
  3. 如果对象文本包含输入的文本,则将对象推送到单独的“过滤”数组中
  4. 显示过滤后的数组

使用 javascript 中内置的字符串 search() 函数可以正常工作,即。

if(objectarray[i].text.search(userstring)>=0){  
    filteredarray.push(currentobject)  
};

现在客户希望按照以下方式进行更高级的搜索:

查找文本包含(x1 或 x2)和(x3 或 x4 或 x5)的对象

其中每个 x 都是一个单词,当满足上述条件时,一个对象将被推送到过滤后的集合中。

是否有内置函数可以处理这种复杂的布尔语句?

4

1 回答 1

2

使用这个问题的答案

我拿这个:

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)

NB '>=0' 需要将搜索函数返回的数值响应转换为布尔值

于 2012-05-03T09:42:57.150 回答