jQuery фильтрует массив данных по нескольким ключам

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

Если у кого-нибудь есть краткий фрагмент кода в одну строку, я воспользуюсь им! 🙂