我有一个数组
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;
});
这不起作用,任何环形交叉路口?
答案 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);
});