Py学习  »  Jquery

jQuery按多个键筛选数据数组

ktstar • 6 年前 • 382 次点击  

我有一个对象数组,看起来像:

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?我想传递一个filterbyid数组(即1,2),在这种情况下,结果应该是:

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

不确定我是否可以对多个ID进行这样的筛选(或者不知道如何进行)。

试着看,但什么也没让步。

提前谢谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52688
文章 [ 1 ]  |  最新文章 6 年前
ktstar
Reply   •   1 楼
ktstar    6 年前

好吧,我希望在过滤器里有一行答案。我继续做,只是在FilterBy id上循环,然后将一个数组推入另一个:

 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 });
 }

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