ホームページ >ウェブフロントエンド >jsチュートリアル >ES6 でオブジェクトから特定のプロパティを効率的に抽出するにはどうすればよいですか?

ES6 でオブジェクトから特定のプロパティを効率的に抽出するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-21 18:29:10137ブラウズ

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

ES6 でオブジェクトからプロパティを取得するためのワンライナー

問題:

目標は、簡潔なコードを作成することですオブジェクトから特定のプロパティを抽出する 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。