Heim  >  Artikel  >  Web-Frontend  >  Wie filtere ich ein Array von Objekten basierend auf mehreren Bedingungen in JavaScript?

Wie filtere ich ein Array von Objekten basierend auf mehreren Bedingungen in JavaScript?

DDD
DDDOriginal
2024-10-26 03:09:27750Durchsuche

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

Filtern eines Arrays von Objekten basierend auf mehreren Bedingungen in JavaScript

Problem:

Gegeben ein Array von Objekten und ein Filter Ziel ist es, die Array-Elemente basierend auf mehreren im Filterobjekt angegebenen Bedingungen zu filtern. Bei einer aktuellen Implementierung tritt jedoch ein Problem auf, bei dem mehrere Elemente, die nur eine Teilmenge der Bedingungen erfüllen, im Ergebnis enthalten sind.

Lösung:

Das Problem entsteht durch die falsche Verwendung der for (var i = 0; i < filter.length; i )-Schleife innerhalb der Filterfunktion. Da es sich bei Filter um ein Objekt handelt, verfügt es nicht über eine Längeneigenschaft und diese Schleife wird überflüssig.

Um dieses Problem zu beheben, können wir direkt über die Eigenschaften des Filterobjekts iterieren und für jedes Benutzerobjekt prüfen, ob eine Eigenschaft vorhanden ist . Der folgende Code demonstriert die korrekte Implementierung:

<code class="javascript">function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      users.forEach(function(user) {
        if (user[prop] === filter[prop]) {
          result.push(user);
        }
      });
    }
  }
  return result;
}</code>

Verbesserte Filterfunktion:

Die verbesserte filterUsers-Funktion iteriert jetzt über die Benutzer und überprüft jede Eigenschaft des Filterobjekts um zu sehen, ob es mit dem entsprechenden Eigenschaftswert des Benutzers übereinstimmt. Nur Benutzer mit übereinstimmenden Werten für alle angegebenen Eigenschaften werden in das Ergebnis einbezogen.

Beispiel:

<code class="javascript">var filter = {
  address: 'England',
  name: 'Mark',
};
var users = [{
  name: 'John',
  email: 'john@example.com',
  age: 25,
  address: 'USA',
},
{
  name: 'Tom',
  email: 'tom@example.com',
  age: 35,
  address: 'England',
},
{
  name: 'Mark',
  email: 'mark@example.com',
  age: 28,
  address: 'England',
},
];

var filteredUsers = filterUsers(users, filter);

console.log(filteredUsers);
// Output: [{
//   name: 'Mark',
//   email: 'mark@example.com',
//   age: 28,
//   address: 'England',
// }]</code>

Diese Implementierung stellt sicher, dass nur der Benutzer, dessen Name Mark und ist wer in England lebt, wird gemäß den Filterbedingungen in das Ergebnis einbezogen.

Das obige ist der detaillierte Inhalt vonWie filtere ich ein Array von Objekten basierend auf mehreren Bedingungen in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn