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
Libérer: 2024-11-11 20:46:03
original
516 Les gens l'ont consulté

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;
};
Copier après la connexion

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), {});
Copier après la connexion

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])
    );
Copier après la connexion

3. Object.assign

const filter = (obj, predicate) =>
    Object.assign(
        {},
        ...Object.keys(obj)
            .filter(key => predicate(obj[key]))
            .map(key => ({[key]: obj[key]}))
    );
Copier après la connexion

Exemple d'utilisation

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

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

console.log(filtered); // { moo: undefined }
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal