„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie filtere ich ein JavaScript-Array von Objekten basierend auf mehreren Bedingungen?

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

Veröffentlicht am 08.11.2024
Durchsuche:105

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

Betrachten Sie das folgende Codesegment:

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

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:

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

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

Beispielverwendung

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

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' }]

Diese Lösung behebt das Problem, bei dem mehrere Filterbedingungen nicht vorhanden waren korrekt angewendet wird, um sicherzustellen, dass das resultierende gefilterte Array die angegebenen Kriterien genau widerspiegelt.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3