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