Heim >Web-Frontend >js-Tutorial >Wie kann ich Eigenschaften in einem JavaScript-Objekt filtern?

Wie kann ich Eigenschaften in einem JavaScript-Objekt filtern?

Susan Sarandon
Susan SarandonOriginal
2024-11-11 20:46:03467Durchsuche

How Can I Filter Properties in a JavaScript Object?

JavaScript filter()-Methode für Objekte

Während der Array-Typ über die filter()-Methode verfügt, ist dies beim Object-Typ nicht der Fall. Ziel dieses Artikels ist es, eine Lösung für die Implementierung einer solchen Methode bereitzustellen.

Implementierung eines benutzerdefinierten Objektfilters

Ein Ansatz besteht darin, den Object.prototype zu erweitern:

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

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

    return result;
};

Alternative Lösungen

Von der Erweiterung globaler Prototypen wird jedoch generell abgeraten. Ziehen Sie stattdessen diese Alternativen in Betracht:

1. Verwenden der 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. Map- und Spread-Syntax

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

3. Object.assign

const filter = (obj, predicate) =>
    Object.assign(
        {},
        ...Object.keys(obj)
            .filter(key => predicate(obj[key]))
            .map(key => ({[key]: obj[key]}))
    );

Beispielverwendung

var foo = { bar: "Yes", moo: undefined };

var filtered = Object.filter(foo, property => typeof property === "undefined");

console.log(filtered); // { moo: undefined }

Das obige ist der detaillierte Inhalt vonWie kann ich Eigenschaften in einem JavaScript-Objekt filtern?. 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