JavaScript: Implementieren einer benutzerdefinierten filter()-Methode für Objekte
Die ECMAScript 5-Spezifikation führt den filter()-Prototyp für Arrays ein, jedoch nicht für Objekte. Von der Erweiterung der in JavaScript integrierten Objekte wird generell abgeraten. Bei Bedarf kann man jedoch mit den folgenden Ansätzen eine benutzerdefinierte filter()-Funktionalität für Objekte erstellen:
1. Verwenden von Reduce() und Object.keys()
Object.filter = (obj, predicate) => Object.keys(obj) .filter(key => predicate(obj[key])) .reduce((res, key) => (res[key] = obj[key], res), {}); // Example: const scores = { John: 2, Sarah: 3, Janet: 1 }; const filtered = Object.filter(scores, score => score > 1); console.log(filtered);
2. Verwenden von Reduce() und Object.keys() mit Object.assign()
Object.filter = (obj, predicate) => Object.keys(obj) .filter(key => predicate(obj[key])) .reduce((res, key) => Object.assign(res, { [key]: obj[key] }), {}); // Example: same as above
3. Verwenden von map() und Spread-Syntax
Object.filter = (obj, predicate) => Object.fromEntries( Object.entries(obj) .filter(([key, value]) => predicate(value)) .map(([key, value]) => [key, value]) ); // Example: same as above
4. Verwenden von Object.entries() und Object.fromEntries()
Object.filter = (obj, predicate) => Object.fromEntries( Object.entries(obj).filter(([key, value]) => predicate(value)) ); // Example: same as above
Denken Sie daran, dass die Erweiterung integrierter Prototypen unbeabsichtigte Folgen haben kann. Im Allgemeinen ist es vorzuziehen, benutzerdefinierte Funktionen als eigenständige Dienstprogramme bereitzustellen oder globale Objekte speziell für bestimmte Funktionen zu erweitern.
Das obige ist der detaillierte Inhalt vonWie implementiert man eine benutzerdefinierte „filter()'-Methode für Objekte in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!