Heim >Web-Frontend >js-Tutorial >Wie können Sie eine „filter()'-Methode für JavaScript-Objekte implementieren?

Wie können Sie eine „filter()'-Methode für JavaScript-Objekte implementieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-20 03:26:01732Durchsuche

How can you implement a `filter()` method for JavaScript objects?

JavaScript: Filter() für Objekte implementieren

JavaScript stellt den filter()-Prototyp für Array-Typen bereit, diese Funktionalität fehlt jedoch für Object Typen. Um diese Einschränkung zu beheben, untersuchen wir, wie Sie eine filter()-Implementierung speziell für Objekte erstellen.

Implementierung:

Object.prototype.filter = function(predicate) {
  var result = {};

  for (key in this) {
    if (this.hasOwnProperty(key) && !predicate(this[key])) {
      result[key] = this[key];
    }
  }

  return result;
};

Während diese Implementierung isoliert funktioniert, fügt das Hinzufügen hinzu Wenn Sie es auf eine Website mit jQuery 1.5 und jQuery UI 1.8.9 übertragen, kann dies zu JavaScript-Fehlern führen.

Alternative Lösungen:

Anstatt den Objektprototyp zu ändern, ziehen Sie diese eigenständigen oder Hilfsfunktionen in Betracht:

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), {});

2. Verwendung der Map- und Spread-Syntax:

Object.filter = (obj, predicate) => 
  Object.entries(obj)
        .filter(([key, value]) => predicate(value))
        .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});

3. Verwendung von Object.entries und Object.fromEntries:

Object.filter = (obj, predicate) => 
  Object.fromEntries(
    Object.entries(obj).filter(([key, value]) => predicate(value))
  );

Beispielverwendung:

var scores = {
  John: 2,
  Sarah: 3,
  Janet: 1
};
var filtered = Object.filter(scores, score => score > 1); 
console.log(filtered);

Diese alternativen Lösungen bieten eine sauberere und wartbarere Möglichkeit Objekteigenschaften filtern und dabei das Originalobjekt beibehalten.

Das obige ist der detaillierte Inhalt vonWie können Sie eine „filter()'-Methode für JavaScript-Objekte implementieren?. 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