Menetapkan Sifat Objek Bersarang Menggunakan Nama Rentetan dalam JavaScript
Dalam JavaScript, mengakses dan mengubah suai sifat objek adalah penting untuk mengurus data anda. Walau bagaimanapun, bagaimana jika anda hanya diberikan nama harta sebagai rentetan dan bukannya urutan kunci langsungnya? Ini boleh timbul dalam senario di mana sifat dijana atau diterima secara dinamik sebagai input pengguna.
Pertimbangkan objek berikut:
var obj = {};
Dan nama sifat:
var propName = "foo.bar.foobar";
Untuk menetapkan nilai obj.foo.bar.foobar, secara tradisinya anda akan menggunakan yang berikut sintaks:
obj.foo.bar.foobar = "hello world";
Walau bagaimanapun, pendekatan ini memerlukan melintasi setiap sifat dalam rantaian secara manual, yang boleh menjadi membosankan dan terdedah kepada ralat, terutamanya untuk sifat bersarang dalam.
Sifat Rekursif Fungsi Tugasan
Untuk menangani cabaran ini, fungsi rekursif yang dipanggil tugaskan boleh dilaksanakan untuk mudahkan proses tugasan:
function assign(obj, prop, value) { if (typeof prop === "string") prop = prop.split("."); if (prop.length > 1) { var e = prop.shift(); assign(obj[e] = Object.prototype.toString.call(obj[e]) === "[object Object]" ? obj[e] : {}, prop, value); } else obj[prop[0]] = value; }
Fungsi ini mengambil objek (obj), nama sifat (prop) sebagai rentetan dan nilai (nilai) untuk ditetapkan pada harta itu. Ia merentasi hierarki objek secara rekursif dan menetapkan sifat yang sesuai kepada nilai yang ditentukan.
Penggunaan
Untuk menetapkan nilai obj.foo.bar.foobar menggunakan tugasan fungsi:
var obj = {}, propName = "foo.bar.foobar"; assign(obj, propName, "Value");
Kod ini akan mencipta sifat bersarang yang diperlukan dan menetapkan nilai obj.foo.bar.foobar kepada "Nilai".
Dengan menggunakan fungsi penetapan sifat rekursif, anda boleh mengakses dan mengubah suai sifat objek bersarang secara dinamik dalam JavaScript menggunakan nama rentetan, menyediakan penyelesaian yang fleksibel dan berskala untuk struktur data yang kompleks .
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Sifat Objek JavaScript Bersarang Menggunakan Nama Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!