Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Cekap Mengakses Sifat Objek JavaScript Bersarang Menggunakan Rentetan Notasi Titik?

Bagaimana untuk Cekap Mengakses Sifat Objek JavaScript Bersarang Menggunakan Rentetan Notasi Titik?

Susan Sarandon
Lepaskan: 2024-11-30 10:02:11
asal
630 orang telah melayarinya

How to Efficiently Access Nested JavaScript Object Properties Using Dot Notation Strings?

Mengakses Sifat Anak Objek dengan Rentetan Notasi Titik

Dalam JavaScript, terdapat pelbagai cara untuk mengakses sifat objek. Walau bagaimanapun, mengakses sifat bersarang dengan laluan rentetan boleh menjadi satu cabaran.

Memandangkan objek seperti:

var r = { a:1, b: { b1:11, b2: 99}};
Salin selepas log masuk

Pertimbangkan senario di mana anda ingin mengakses nilai 99 dengan menentukan rentetan laluan var s = "b.b2". Walaupun kaedah tradisional seperti r.b.b2 atau r['b']['b2'] berfungsi, anda mungkin lebih suka menggunakan tatatanda yang lebih ringkas.

Penyelesaian Naif tetapi Cekap

function getDescendantProp(obj, desc) {
    var arr = desc.split(".");
    while(arr.length && (obj = obj[arr.shift()]));
    return obj;
}
Salin selepas log masuk

Fungsi ini secara berulang membelah rentetan pada titik dan menavigasi struktur objek, akhirnya mengembalikan sifat yang diminta.

Contoh Penggunaan

console.log(getDescendantProp(r, "b.b2"));
//-> 99
Salin selepas log masuk

Sambungan

Fungsi yang disediakan hanya menyokong mengakses sifat objek bersarang. Untuk penggunaan yang lebih maju, anda boleh mengubah suainya untuk mengendalikan indeks tatasusunan juga:

function advancedGetDescendantProp(obj, desc) {
    var arr = desc.split(".");
    while(arr.length) {
        let key = arr.shift();
        if (isNaN(key)) {
            obj = obj[key];
        } else {
            obj = obj[parseInt(key)];
        }
        if (!obj) return undefined;
    }
    return obj;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengakses Sifat Objek JavaScript Bersarang Menggunakan Rentetan Notasi Titik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan