ネストされたオブジェクトを簡潔にフラット化する
ネストされたオブジェクトをフラット化された構造に変換することは、さまざまなプログラミング シナリオでしばしば必要になります。迅速かつ効率的な解決策として、簡潔なワンライナーを利用できます。
提供されたネストされたオブジェクトをフラット化するには:
{ a:2, b: { c:3 } }
目的の出力に変換します:
{ a:2, c:3 }
次の JavaScript 式を使用します。
Object.assign({}, ...function _flatten(o) { return [].concat(...Object.keys(o).map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]})))}(yourObject))
このアプローチの中心となる概念は、1 つのプロパティ オブジェクトの配列を再帰的に作成することです。 Object.keys(o) メソッドは、入力オブジェクト o のすべてのキーを取得します。次に、各キー k のオブジェクト タイプがチェックされます。 typeof o[k] === 'object' の場合、関数 _ flatten がネストされたオブジェクトに再帰的に適用されます。それ以外の場合は、キー k と値 o[k] を持つ 1 つのプロパティ オブジェクトを構築します。
[].concat(... 構文は、これらすべての 1 つのプロパティ オブジェクトを 1 つの配列に結合します。最後に、 Object.assign({}, ...) は、これらの配列を目的の平坦化された出力にマージします。
読みやすくするために、コードは次のように再フォーマットできます。
Object.assign( {}, ...function _flatten(o) { return [].concat(...Object.keys(o) .map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]}) ) ); }(yourObject) )
これは、 liner は、ネストされたオブジェクトを効果的に平坦化し、データ変換のニーズに簡潔かつ効率的なソリューションを提供します。
以上がJavaScript でネストされたオブジェクトを簡潔にフラット化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。