Heim > Web-Frontend > js-Tutorial > 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
Freigeben: 2024-10-30 04:27:28
Original
1109 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage