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
Libérer: 2024-12-21 18:29:10
original
143 Les gens l'ont consulté

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

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

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

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal