正在生成if语句JQuery

Generating if statement JQuery

本文关键字:语句 JQuery if      更新时间:2023-09-26

我有一个数组selected_filters,我用单击的元素的id填充它。我需要根据这个数组生成一个if语句。我尝试生成字符串,然后使用eval()执行它,但没有成功。也许我做错了什么,或者你们有什么想法如何生成声明吗?

语句字符串生成:

 var selected_filters = [filter_by_color,filter_by_transmissivity];
    $.each(selected_filters, function(k, v){
      validate += '($.inArray(t.data(' + v + '),filters_obj[' + v + ']) > -1 || obj_l == emptyFilters) && '; 
    });
    validate += '(search.contains(filters_obj.search) || filters_obj.search.length === 0)';

生成的字符串:($.inArray(t.data(filter_by_color),filters_obj[filter_by_color]) > -1 || obj_l == emptyFilters) && ($.inArray(t.data(filter_by_transmissivity),filters_obj[filter_by_transmissivity]) > -1 || obj_l == emptyFilters) && (search.contains(filters_obj.search) || filters_obj.search.length === 0)

用法:

if(eval(validate)){ //some code }

找到解决方案。更改了逻辑,不再使用eval()。已将代码更改为:

var visible = true;
 $.each(selected_filters, function(k, v){
  visible = visible && ($.inArray(t.data(v),filters_obj[v]) > -1 || filters_obj[v].length === 0);
                });
  visible = visible && (search.contains(filters_obj.search) || filters_obj.search.length === 0);

用法:if(visible){ //some code }