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
Freigeben: 2024-11-20 03:26:01
Original
712 Leute haben es durchsucht

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;
};
Nach dem Login kopieren

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), {});
Nach dem Login kopieren

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 }), {});
Nach dem Login kopieren

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

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

Beispielverwendung:

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

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage