Maison >interface Web >js tutoriel >Comment puis-je filtrer les propriétés dans un objet JavaScript ?

Comment puis-je filtrer les propriétés dans un objet JavaScript ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-11 20:46:03384parcourir

How Can I Filter Properties in a JavaScript Object?

Méthode JavaScript filter() pour les objets

Bien que le type Array ait la méthode filter(), le type Object n'en a pas. Cet article vise à fournir une solution pour implémenter une telle méthode.

Implémentation de filtre d'objet personnalisé

Une approche consiste à étendre le Object.prototype :

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

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

    return result;
};

Solutions alternatives

Cependant, l'extension de prototypes globaux est généralement déconseillée. Envisagez plutôt ces alternatives :

1. Utilisation de Réduire et Object.keys

Object.filter = (obj, predicate) =>
    Object.keys(obj)
        .filter(key => predicate(obj[key]))
        .reduce((res, key) => (res[key] = obj[key], res), {});

2. Syntaxe de cartographie et de propagation

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]}))
    );

Exemple d'utilisation

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

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

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn