Mencipta Senarai Harta Hierarki daripada Objek Kompleks Secara Rekursif
Dalam situasi di mana objek kompleks mengandungi berbilang sub-objek dan sifat dengan jenis data yang berbeza-beza, keperluan timbul untuk membina senarai hierarki hartanah tersebut. Untuk mencapai matlamat ini, pendekatan gelung rekursif adalah penting.
Masalah Diberi:
Sesuatu objek disediakan dengan struktur berikut:
<code class="javascript">var object = { aProperty: { aSetting1: 1, aSetting2: 2, aSetting3: 3, aSetting4: 4, aSetting5: 5 }, bProperty: { bSetting1: { bPropertySubSetting : true }, bSetting2: "bString" }, cProperty: { cSetting: "cString" } };</code>
Output yang Diingini:
Matlamatnya adalah untuk mencipta senarai kunci yang menggambarkan hierarki objek dengan tepat:
aProperty.aSetting1 aProperty.aSetting2 aProperty.aSetting3 aProperty.aSetting4 aProperty.aSetting5 bProperty.bSetting1.bPropertySubSetting bProperty.bSetting2 cProperty.cSetting
Penyelesaian Awal:
<code class="javascript">function iterate(obj) { for (var property in obj) { if (obj.hasOwnProperty(property)) { if (typeof obj[property] == "object") { iterate(obj[property]); } else { console.log(property + " " + obj[property]); } } } }</code>
Fungsi ini menggelung melalui objek dan mencetak kekunci, tetapi ia tidak mengekalkan hierarki.
Penyelesaian Rekursif:
Untuk mengekalkan hierarki, kita boleh mengekalkan rentetan tindanan yang mewakili laluan harta semasa. Apabila sifat primitif ditemui, laluan dicetak. Untuk objek bersarang, timbunan dikemas kini dan rekursi berterusan.
<code class="javascript">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(property + " " + obj[property]); $('#output').append($("<div/>").text(stack + '.' + property)) } } } } iterate(object, '');</code>
Nota Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Membuat Senarai Harta Hierarki daripada Objek Kompleks Secara Rekursif dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!