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!