Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Meratakan Senarai Harta Objek Bersarang dengan Hierarki?

Bagaimana untuk Meratakan Senarai Harta Objek Bersarang dengan Hierarki?

Susan Sarandon
Susan Sarandonasal
2024-10-20 14:30:02875semak imbas

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>

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>

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!

Kenyataan:
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