ネストされたオブジェクトのプロパティ リストを階層で平坦化する方法

Susan Sarandon
リリース: 2024-10-20 14:30:02
オリジナル
792 人が閲覧しました

How to Flatten a Nested Object's Property List with Hierarchy?

プロパティ リストを構築するためのオブジェクトの再帰ループ

問題:
複雑なオブジェクトからのプロパティ キーのフラット化されたリストの作成階層を維持しながら、複数レベルのネストを使用します。

基礎となるデータ構造:
指定されたオブジェクトには、さまざまなレベルのプロパティを持つ階層構造があります。

望ましい出力:
階層を反映するプロパティ キーのリスト。

初期アプローチ:
基本的な再帰関数である反復がループに提供されます。オブジェクトを介してプロパティ キーを出力します。ただし、階層は維持されません。

解決策:
階層を考慮するために、スタック変数が導入され、オブジェクト内の現在のパスが保存されます。再帰関数がオブジェクトを走査すると、現在のプロパティがスタックに追加されます。プリミティブ プロパティが見つかると、そのプロパティへのフル パスを表す連結されたスタックとともに出力されます。

改訂コード:

<code class="js">function iterate(obj, stack) {
  for (var property in obj) {
    if (obj.hasOwnProperty(property)) {
      if (typeof obj[property] === "object") {
        iterate(obj[property], stack + "." + property);
      } else {
        console.log(stack + "." + property);
        $('#output').append($('<div>').text(stack + "." + property));
      }
    }
  }
}

iterate(object, "");</code>
ログイン後にコピー

更新されたソリューション:
参照された回答の更新されたソリューションは、マップ関数とリデュース関数の組み合わせを使用して、オブジェクトを再帰的に走査し、プロパティ キーのフラット化されたリストを構築する、よりクリーンな実装を提供します。

<code class="js">Object.keys(object).map(key => createPath(object, key, "")).reduce((a, b) => a.concat(b))</code>
ログイン後にコピー

関数の説明:

  • createPath: ルート オブジェクトから現在のプロパティへのプロパティ パスを再帰的に構築します。
  • reduce: すべてのプロパティからのプロパティ パスの配列を単一のフラット化された配列に結合します。

以上がネストされたオブジェクトのプロパティ リストを階層で平坦化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!