JavaScript: filter() für Objekte
Der filter()-Prototyp existiert für Array-Typen in ECMAScript 5, jedoch nicht für Objekttypen. Um eine filter()-Funktion für Objekte in JavaScript zu implementieren, können Sie die folgenden Strategien verwenden:
1. Verwenden von Reduce() und Object.keys()
Diese Methode verwendet Reduce(), um die Schlüssel des Objekts zu durchlaufen, und Object.keys(), um diese Schlüssel abzurufen. Dann filtert es die Schlüssel basierend auf einer Prädikatfunktion und gibt ein neues Objekt mit den gefilterten Schlüssel-Wert-Paaren zurück:
Object.filter = (obj, predicate) => { Object.keys(obj) .filter(key => predicate(obj[key])) .reduce((res, key) => (res[key] = obj[key], res), {}); };
2. Verwenden von map() und Spread-Syntax
Ein ähnlicher Ansatz wie (1), aber anstelle von Reduce() können Sie map() und die Spread-Syntax (...) verwenden, um eine neue zu erstellen Objekt:
Object.filter = (obj, predicate) => { Object.keys(obj) .filter(key => predicate(obj[key])) .map(key => ({ [key]: obj[key] })) .reduce((a, b) => ({ ...a, ...b }), {}); };
3. Verwenden von Object.entries() und Object.fromEntries()
Diese Methode verwendet Object.entries(), um das Objekt in ein Array von Schlüssel-Wert-Paaren umzuwandeln und dann Object.fromEntries() zur Rekonstruktion das Objekt nach dem Filtern:
Object.filter = (obj, predicate) => { return Object.fromEntries( Object.entries(obj).filter(([key, value]) => predicate(value)) ); };
4. Vorsichtsmaßnahme: Vermeiden Sie die Erweiterung von Object.prototype
Während diese Lösungen funktionale filter()-Implementierungen für Objekte bereitstellen, gilt es als schlechte Praxis, Object.prototype direkt zu erweitern. Stellen Sie Ihre Filterfunktion stattdessen als eigenständige Dienstprogrammfunktion bereit, ähnlich den vorhandenen globalen JavaScript-Dienstprogrammfunktionen wie Object.assign() und Object.keys().
Das obige ist der detaillierte Inhalt vonWie kann ich die Schlüssel-Wert-Paare in einem JavaScript-Objekt effektiv filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!