Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Meratakan Senarai Harta Objek Bersarang dengan Hierarki?
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:
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!