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

DDD
Lepaskan: 2024-10-20 14:29:29
asal
195 orang telah melayarinya

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

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

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

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

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!

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
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!