前端动态过滤妙用
假设动态过滤器如下
let data = [ ]; //待过滤的数据
let filter = {updateStatus:0, isRefreshScore:1, refreshType: 0}; //动态的过滤器,即filter对象可能有3个键值对,也可能有5个键值对;
filter = Object.entries(filter).map(item=>`_item.${item[0]}==${item[1]}`); //Object.entries在此非常关键,它可生成一个简单的二维数据
filter = filter.join(' && '); //将此过滤器转换成字符串,以便使用&& 符号连接起来
data= data.filter(_item => eval(filter)); //将字符串反转为JS变量,注意eval命令有一定的风险,如果上述的filter对象非用户所输入,个人觉得比较安全!