#jquery #arrays #filter
#jquery #массивы #Фильтр
Вопрос:
У меня есть массив объектов, который выглядит примерно так:
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):
var filteredArr = arr.filter(function (x) { return x.FilterBy === oneId });
Как я могу расширить этот метод, чтобы принимать несколько идентификаторов? Я хотел бы передать массив FilterByIds (т. Е. 1, 2), и в этом случае результат должен быть:
filteredArr = [{FilterBy: 1, Id: 10, Name: W},
{FilterBy: 1, Id: 11, Name: X},
{FilterBy: 2, Id: 12, Name: Y}]
Не уверен, смогу ли я выполнить фильтр по нескольким подобным идентификаторам (или не знаю, как это сделать).
Пробовал искать, но ничего не дал.
Заранее спасибо!
Ответ №1:
Хорошо, я надеялся на ответ в одну строку в фильтре. Я пошел дальше и сделал это, просто перебрав идентификаторы filterBy, а затем вставив один массив в другой:
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 });
}
Если у кого-нибудь есть краткий фрагмент кода в одну строку, я воспользуюсь им! 🙂