【问题标题】:Javascript logical search?Javascript逻辑搜索?
【发布时间】:2012-05-01 11:53:42
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

标签: javascript full-text-search logic boolean


【解决方案1】:

使用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)

注意'>=0' 用于将搜索函数返回的数值响应转换为布尔值

【讨论】:

  • 我喜欢自我解决的问题... :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多