Heim >Web-Frontend >js-Tutorial >Wie implementiert man eine benutzerdefinierte „filter()'-Methode für Objekte in JavaScript?

Wie implementiert man eine benutzerdefinierte „filter()'-Methode für Objekte in JavaScript?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-13 12:13:02880Durchsuche

How to Implement a Custom `filter()` Method for Objects in JavaScript?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn