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

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

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 04:27:28992Durchsuche

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

Filtern von Arrays in JavaScript basierend auf mehreren Bedingungen

Problemstellung

Gegeben ein Array von Objekten und ein Filterobjekt, besteht das Ziel darin, zu filtern und Vereinfachen Sie das Array basierend auf mehreren im Filter angegebenen Bedingungen. Ein besonderes Problem tritt jedoch auf, wenn der Filter mehrere Eigenschaften enthält.

Vorgeschlagene Lösung

Beachten Sie das folgende Codesegment:

<code class="js">function filterUsers(users, filter) {
  var result = [];
  for (var prop in filter) {
    if (filter.hasOwnProperty(prop)) {
      // Iterate over the array
      for (var i = 0; i < filter.length; i++) {
        if (users[i][prop] === filter[prop]) {
          result.push(users[i]);
        }
      }
    }
  }
  return result;
}

In der vorgeschlagenen Lösung tritt das Problem auf wenn der Filter mehrere Eigenschaften enthält. Insbesondere während der zweiten Iteration ist der Vergleich zwischen „users[i][prop]“ und „filter[prop]“ falsch. Um dies zu beheben, können wir den Code wie folgt ändern:

<code class="js">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;
}</code>

In dieser Version verwenden wir die integrierte Filtermethode von Arrays, um die Filterbedingungen dynamisch anzuwenden. Dadurch wird sichergestellt, dass nur Objekte in das Ergebnis einbezogen werden, die alle angegebenen Bedingungen erfüllen.

Beispielverwendung

Mit der aktualisierten Lösung funktioniert der Filterprozess wie erwartet:

<code class="js">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 filter = {
  address: 'England',
  name: 'Mark'
};

var filteredUsers = filterUsers(users, filter);

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

Diese Lösung behebt das Problem, dass mehrere Filterbedingungen nicht korrekt angewendet wurden, und stellt sicher, dass das resultierende gefilterte Array die angegebenen Kriterien genau widerspiegelt.

Das obige ist der detaillierte Inhalt vonWie filtere ich ein JavaScript-Array von Objekten basierend auf mehreren Bedingungen?. 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