Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menetapkan Sifat Secara Dinamik dalam Objek JavaScript Bersarang?

Bagaimana untuk Menetapkan Sifat Secara Dinamik dalam Objek JavaScript Bersarang?

Linda Hamilton
Linda Hamiltonasal
2024-10-31 08:16:29349semak imbas

How to Dynamically Set Properties in Nested JavaScript Objects?

Penugasan Harta Dinamik dalam Objek Bersarang

Menetapkan sifat objek bersarang boleh menjadi tugas yang kompleks dari segi pengaturcaraan, terutamanya apabila laluan dan nilai harta boleh berbeza-beza dari segi kedalaman dan jenis. Untuk memudahkan proses ini, kita boleh mencipta fungsi yang merentasi dan menetapkan sifat secara dinamik dalam objek.

Pelaksanaan Fungsi

<code class="javascript">function set(path, value) {
    var schema = obj; // Moving reference to internal objects within obj
    var pList = path.split('.');
    var len = pList.length;

    for (var i = 0; i < len - 1; i++) {
        var elem = pList[i];
        if (!schema[elem]) schema[elem] = {};
        schema = schema[elem];
    }

    schema[pList[len - 1]] = value;
}</code>

Contoh Penggunaan

Pertimbangkan objek bersarang berikut :

<code class="javascript">var obj = {
    db: {
        mongodb: {
            host: 'localhost'
        }
    }
};</code>

Untuk menetapkan harta pada laluan tertentu, kita boleh menggunakan fungsi set():

<code class="javascript">set('db.mongodb.user', 'root');</code>

Result

Menggunakan fungsi set() kepada objek contoh akan menghasilkan:

<code class="javascript">obj = {
    db: {
        mongodb: {
            host: 'localhost',
            user: 'root'
        }
    }
};</code>

Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Sifat Secara Dinamik dalam Objek JavaScript Bersarang?. 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