2017-10-19 37 views
0

我有这个功能来过滤从阿贾克斯如何使用jQuery返回带有多个标签的变量?

 var csvf = data.filter(function (el) { 
      return ['TRUCK_CPX'].indexOf(el.TAG) >= 0 
      && ['CA5533'].indexOf(el.Chave) >= 0 

       }); 

我所要做的就是创建一个动态的功能做类似的东西取回我的数据:

function datafilter(x, y) { 
// I don't know what to do here // 
} 

为:

var csvf = data.filter(function (el) { 

//Using one tag:// 
function datafilter('TAG:"TRUCK_CPX"'); }); 

//return ['TRUCK_CPX'].indexOf(el.TAG) >= 0// 

//Using two tags:// 
function datafilter('TAG:"TRUCK_CPX"', 'Chave:"CA5533"'); }); 

//return ['TRUCK_CPX'].indexOf(el.TAG) >= 0 && ['CA5533'].indexOf(el.Chave) >= 0// 

任何人都知道我该怎么做?

回答

0

定义一个带有两个参数的函数:一个对象和元素。

  • 地图每个键中的对象的条件

  • 的结果的空间。然后,降低所得的布尔值数组。


function filter(item, el) { 
    return Object.keys(item).map(function(key) { 
     return [item[key]].indexOf(el[key]) >= 0 
    }) 
    .reduce(function(prev, memo) { 
     return prev && memo; 
    }, true); 
} 

const matchInverse = filter(
    {glue: 'gabby', alpha: 'allison'}, 
    {alpha: 'allison', glue: 'gabby'} 
); 

console.log(matchInverse); 

var csvf = data.filter(filter(item, el));