Bagaimana untuk Meratakan Senarai Harta Objek Bersarang dengan Hierarki?

Susan Sarandon
Lepaskan: 2024-10-20 14:30:02
asal
792 orang telah melayarinya

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

Gelung Rekursif Melalui Objek untuk Membina Senarai Harta

Masalah:
Mewujudkan senarai rata kunci harta daripada objek kompleks dengan berbilang peringkat sarang, sambil mengekalkan hierarki.

Struktur Data Dasar:
Objek yang diberikan mempunyai struktur hierarki dengan sifat pada tahap yang berbeza.

Output yang Diingini:
Senarai kunci sifat yang mencerminkan hierarki.

Pendekatan Awal:
Fungsi rekursi asas, berulang, disediakan untuk menggelung melalui objek dan mencetak kunci harta. Walau bagaimanapun, ia tidak mengekalkan hierarki.

Penyelesaian:
Untuk mengambil kira hierarki, pembolehubah tindanan diperkenalkan untuk menyimpan laluan semasa dalam objek. Apabila fungsi rekursi melintasi objek, ia menambahkan sifat semasa pada timbunan. Apabila sifat primitif ditemui, ia dicetak bersama tindanan bercantum, mewakili laluan penuh ke harta itu.

Kod Disemak:

<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>
Salin selepas log masuk

Penyelesaian Dikemaskini:
Penyelesaian yang dikemas kini dalam jawapan yang dirujuk menyediakan pelaksanaan yang lebih bersih menggunakan gabungan peta dan mengurangkan fungsi untuk melintasi objek secara rekursif dan membina senarai kekunci sifat yang diratakan.

<code class="js">Object.keys(object).map(key => createPath(object, key, "")).reduce((a, b) => a.concat(b))</code>
Salin selepas log masuk

Penjelasan Fungsi:

  • createPath: Secara rekursif membina laluan sifat daripada objek akar kepada harta semasa.
  • reduce: Menggabungkan tatasusunan laluan harta daripada semua sifat menjadi satu tatasusunan leper.

Atas ialah kandungan terperinci Bagaimana untuk Meratakan Senarai Harta Objek Bersarang dengan Hierarki?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!