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.
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.
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!