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

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

Barbara Streisand
Barbara Streisandoriginal
2024-12-24 17:32:14197parcourir

How Can I Efficiently Extract Specific Properties from an Object in ES6?

One-liner pour extraire les propriétés d'un objet dans ES6

De nombreux développeurs ont recherché une méthode concise pour extraire des propriétés spécifiques d'objets dans ES6. Une solution courante utilise la déstructuration et des littéraux d'objet simplifiés, bien que répéter la liste des champs dans le code puisse être fastidieux.

Solution améliorée

Une approche plus rationalisée implique "paramètre déstructuration", ce qui élimine le besoin d'un paramètre explicite :

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

Généralisé Solution

Pour une plus grande flexibilité, considérez la fonction "pick", qui accepte un objet et un nombre arbitraire de propriétés comme arguments :

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

Préserver les attributs de propriété

Pour préserver les attributs de propriété tels que la configurabilité et les getters/setters tout en excluant les éléments non dénombrables propriétés :

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

Ces solutions fournissent un moyen concis et polyvalent d'extraire des propriétés spécifiques d'objets dans ES6, répondant à divers cas d'utilisation.

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