我有一个类似于以下内容的对象数组:
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进行过滤(或不知道如何做)。
试着看,但是什么也没产生。
谢谢!
答案 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 });
}
如果有人有一行简洁的代码,我就接受! :)