Javascript逻辑搜索?

Javascript逻辑搜索?,javascript,full-text-search,logic,boolean,Javascript,Full Text Search,Logic,Boolean,我为javascript对象数组构建了一个搜索函数,如下所示: 用户在表单输入框中键入文本 循环遍历对象数组 如果对象文本包含输入文本,则将对象推入单独的“过滤”数组 显示过滤阵列 使用javascript ie中内置的string search()函数可以很好地工作 if(objectarray[i].text.search(userstring)>=0){ filteredarray.push(currentobject) }; 现在,客户希望按照以下内容进行更高级的

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

  • 用户在表单输入框中键入文本
  • 循环遍历对象数组
  • 如果对象文本包含输入文本,则将对象推入单独的“过滤”数组
  • 显示过滤阵列
  • 使用javascript ie中内置的string search()函数可以很好地工作

    if(objectarray[i].text.search(userstring)>=0){  
        filteredarray.push(currentobject)  
    };
    
    现在,客户希望按照以下内容进行更高级的搜索:

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

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

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

    使用

    我认为:

    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)
    

    注意:'>=0'是将搜索函数返回的数字响应转换为布尔值所必需的。

    我喜欢自解问题…:)请考虑这个库,它要求使用解析来描述你所描述的事物: