通过grep搜索动态过滤器表达式

时间:2014-12-30 06:54:19

标签: jquery grep

我有一个数组

var num = [1,2,3,4,5,6,7]

并且我的filterexpression是动态的,即它随着条件不断变化:

var filterExpression="num!=2"

If(//some condition)
{
filterExpression=filterExpression+ "num!=5"
}

我想使用grep:

进行搜索
$.grep((num), function (num) {
                    return filterExpression;
                });

这不起作用,任何环形交叉路口?

1 个答案:

答案 0 :(得分:1)

首先,

num={1,2,3,4,5,6,7}

不是数组而是对象。

问题是您使用双引号来设置filterExpression。 一旦你使用双引号,它将是String,永远​​不会被执行。 如果您使用eval,您可以将字符串作为Javascript代码执行,但不建议这样做,除非您因为安全性和性能问题而无法使用。在这种情况下,您不要#39; t必须使用它。

var numbers =[1,2,3,4,5,6,7];


var filterExpression = [1];

if("someCondition"){
  filterExpression.push(4);
}

$.grep((numbers),function(number){
  for(var i in filterExpression){
    if(number == i){
      return false
    }
  }
  return true
});

尽管我不建议,但下面的代码是使用String作为过滤表达式的方式。

var numbers = [1,2,3,4,5,6,7];

var filterExpression = "number!=2";

if("some condition"){
  filterExpression += "&& number!=5";
}
$.grep((numbers), function(number){
  return eval(filterExpression);
});