我希望能够使用字符串作为比较运算符(例如==,>,<,< =,> =,<>,!=,!<,!> ;)
基本上,我正在解析一个看起来像这样的字符串......
var my_string = "id==2";
然后我将此字符串转换为最终看起来像这样的数组......
var my_array = ["id", "==", "2"];
然后我有一个像这样的对象......
var my_obj = { id: 2, name: "My Object" };
我希望能够从索引1的my_array中获取我的比较运算符的字符串版本,并以与此类似的方式将其用作比较运算符...
if(my_array[0] in my_obj)
{
var object_value = my_obj[my_array[0]];
var is_true = PreformComparison(my_array[2], my_array[1], object_value);
}
答案 0 :(得分:3)
假设您不想要像eval
这样的慢速技巧,最好的解决方案是拥有一个功能图:
var funs = {
'==':function(a,b){ return a==b },
'>':function(a,b){ return a>b },
...
}
然后您可以这样称呼它:
var is_true = funs[my_array[1]](object_value, my_array[2]);