Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Membuat Senarai Harta Hierarki daripada Objek Kompleks Secara Rekursif dalam JavaScript?

Bagaimana untuk Membuat Senarai Harta Hierarki daripada Objek Kompleks Secara Rekursif dalam JavaScript?

DDD
DDDasal
2024-10-20 14:29:29196semak imbas

How to Create a Hierarchical Property List from Complex Objects Recursively in JavaScript?

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($(&quot;<div/>&quot;).text(stack + '.' + property))
                }
            }
        }
    }

iterate(object, '');</code>

Nota Tambahan:

  • Penyelesaian ini mengekalkan struktur objek yang sama tetapi ditambah laluan lengkap ke senarai output.
  • Untuk penyelesaian yang lebih elegan yang memisahkan hierarki daripada data, rujuk jawapan lain.

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!

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