Maison >interface Web >js tutoriel >Comment extraire efficacement des propriétés spécifiques d'un objet dans ES6 ?

Comment extraire efficacement des propriétés spécifiques d'un objet dans ES6 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-21 18:29:10197parcourir

How to Efficiently Extract Specific Properties from an Object in ES6?

One-liner pour prendre certaines propriétés d'un objet dans ES6

Problème :

Le but est de créer un fonction dans ES6 qui extrait des propriétés spécifiques d’un objet. Une solution impliquant une déstructuration et des littéraux d'objet simplifiés est présentée, mais des problèmes surviennent concernant la répétition des listes de champs.

Réponse :

Pour obtenir une solution plus fine, envisagez d'utiliser le paramètre déstructuration pour éliminer le besoin d'un paramètre explicite :

({id, title}) => ({id, title})

Bien que la déstructuration des paramètres soit pratique, elle nécessite toujours de répéter la liste des propriétés. Pour une solution plus générale, utilisez ce qui suit :

function pick(o, ...props) {
    return Object.assign({}, ...props.map(prop => ({[prop]: o[prop]})));
}

Cette solution utilise Object.assign pour fusionner des objets tout en préservant les propriétés spécifiées (accessoires).

Considérations supplémentaires pour les attributs de propriété :

S'il est crucial de conserver les attributs des propriétés d'origine (comme la configurabilité et les getters/setters), et excluez les propriétés non énumérables, considérez les éléments suivants :

function pick(o, ...props) {
    var has = p => o.propertyIsEnumerable(p),
        get = p => Object.getOwnPropertyDescriptor(o, p);

    return Object.defineProperties({},
        Object.assign({}, ...props
            .filter(prop => has(prop))
            .map(prop => ({prop: get(props)})))
    );
}

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