JavaScript でネストされたオブジェクトを簡潔にフラット化する方法

DDD
リリース: 2024-10-22 13:36:02
オリジナル
729 人が閲覧しました

How to Flatten Nested Objects Concisely in JavaScript?

ネストされたオブジェクトを簡潔にフラット化する

ネストされたオブジェクトをフラット化された構造に変換することは、さまざまなプログラミング シナリオでしばしば必要になります。迅速かつ効率的な解決策として、簡潔なワンライナーを利用できます。

提供されたネストされたオブジェクトをフラット化するには:

{
  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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート