jQuery фильтрует массив данных по нескольким ключам - PullRequest
0 голосов
/ 13 марта 2019

У меня есть массив объектов, который выглядит примерно так:

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 Ответ

0 голосов
/ 13 марта 2019

Хорошо, я надеялся получить однострочный ответ в фильтре. Я пошел вперед и сделал это, просто перебрав идентификаторы 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 });
 }

Если у кого-нибудь будет сжатый кусок кода в одну строку, я возьму его! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...