問題:
目標は、簡潔なコードを作成することですオブジェクトから特定のプロパティを抽出する ES6 の関数。オブジェクト リテラルの分割と簡素化を伴う解決策が提示されていますが、フィールド リストの繰り返しに関して懸念が生じます。
回答:
よりスリムな解決策を実現するには、パラメーターの使用を検討してください。明示的なパラメータの必要性を排除するための構造化:
({id, title}) => ({id, title})
パラメータの構造化中便利ですが、やはりプロパティ リストを繰り返す必要があります。より一般的な解決策については、次のようにします。
function pick(o, ...props) { return Object.assign({}, ...props.map(prop => ({[prop]: o[prop]}))); }
この解決策は、Object.assign を利用して、指定されたプロパティ (props) を保持しながらオブジェクトをマージします。
プロパティ属性に関する追加の考慮事項:
元のプロパティの属性を保持することが重要な場合 (例:構成可能性とゲッター/セッター)、列挙不可能なプロパティを除外する場合は、次の点を考慮してください:
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)}))) ); }
以上がES6 でオブジェクトから特定のプロパティを効率的に抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。