«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как отфильтровать массив объектов JavaScript на основе нескольких условий?

Как отфильтровать массив объектов JavaScript на основе нескольких условий?

Опубликовано 8 ноября 2024 г.
Просматривать:676

How to Filter a JavaScript Array of Objects Based on Multiple Conditions?

Фильтрация массивов в JavaScript на основе нескольких условий

Постановка задачи

При наличии массива объектов и объекта фильтра цель состоит в том, чтобы отфильтровать и упростить массив на основе нескольких условий, указанных в фильтре. Однако конкретная проблема возникает, когда фильтр содержит несколько свойств.

Предлагаемое решение

Рассмотрим следующий сегмент кода:

function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Iterate over the array
      for (var i = 0; i 

В предлагаемом решении проблема возникает, когда фильтр содержит несколько свойств. В частности, во время второй итерации сравнение пользователей[i][prop] и filter[prop] неверно. Чтобы это исправить, мы можем изменить код следующим образом:

function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Apply filter on the array
      users = users.filter((user) => user[prop] === filter[prop]);
    }
  }
  return result;
}

В этой версии мы используем встроенный метод фильтрации массивов для динамического применения условий фильтра. Это гарантирует, что в результат будут включены только объекты, удовлетворяющие всем указанным условиям.

Пример использования

С обновленным решением процесс фильтрации будет работать должным образом:

var users = [{
  name: 'John',
  email: '[email protected]',
  age: 25,
  address: 'USA'
}, {
  name: 'Tom',
  email: '[email protected]',
  age: 35,
  address: 'England'
}, {
  name: 'Mark',
  email: '[email protected]',
  age: 28,
  address: 'England'
}];

var filter = {
  address: 'England',
  name: 'Mark'
};

var filteredUsers = filterUsers(users, filter);

console.log(filteredUsers); // Output: [{ name: 'Mark', email: '[email protected]', age: 28, address: 'England' }]

Это решение устраняет проблему, из-за которой не выполнялось несколько условий фильтра. применяется правильно, гарантируя, что полученный отфильтрованный массив точно отражает указанные критерии.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3