jQuery通过多个键过滤数据数组

时间:2019-03-13 19:18:50

标签: jquery arrays filter

我有一个类似于以下内容的对象数组:

var arr = [{FilterBy: 1, Id: 10, Name: W},
              {FilterBy: 1, Id: 11, Name: X}, 
              {FilterBy: 2, Id: 12, Name: Y}, 
              {FilterBy: 3, Id: 13, Name: Z}];

我有一个方法,可以过滤数组并传递参数“ oneId”(这是一个FilterBy id):

 var filteredArr = arr.filter(function (x) { return x.FilterBy === oneId });

如何扩展此方法以接受多个ID?我想传递一个FilterByIds数组(即1、2),在这种情况下,结果应该是:

 filteredArr = [{FilterBy: 1, Id: 10, Name: W},
              {FilterBy: 1, Id: 11, Name: X}, 
              {FilterBy: 2, Id: 12, Name: Y}]

不确定是否可以对多个ID进行过滤(或不知道如何做)。

试着看,但是什么也没产生。

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,我希望过滤器中能有一个单行答案。我通过循环遍历FilterBy Ids,然后将一个数组推入另一个数组来做到这一点:

 var filterByIds = [] //my array of IDs
 var filteredData = [];
 for (var i = 0; i < filterByIds.length; i++) {
    //var newData = ;
    [].push.apply(filteredData, getFilteredDataArrayBy(selectorToUpdate, parseInt(filterByIds[i])));
}

 function getFilteredDataArrayBy(fieldName, filterById) {
     return filteredDataArr = dataArray[fieldName].filter(function (x) { return x.FilterBy === filterById });
 }

如果有人有一行简洁的代码,我就接受! :)