Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Menetapkan Nilai Secara Dinamik kepada Objek JavaScript Bersarang Dalam Menggunakan Hanya Nama Harta Rentetan?

Bagaimanakah Saya Boleh Menetapkan Nilai Secara Dinamik kepada Objek JavaScript Bersarang Dalam Menggunakan Hanya Nama Harta Rentetan?

Barbara Streisand
Lepaskan: 2024-12-10 07:26:11
asal
393 orang telah melayarinya

How Can I Dynamically Assign Values to Deeply Nested JavaScript Objects Using Only a String Property Name?

Penugasan Harta Dinamik dalam JavaScript

Dalam senario tertentu, anda mungkin menghadapi keperluan untuk menetapkan nilai kepada harta yang bersarang dalam dalam objek struktur. Walau bagaimanapun, anda mungkin hanya mempunyai nama sifat sebagai rentetan. Ini boleh menimbulkan cabaran, kerana mengakses secara langsung harta itu memerlukan merentasi keseluruhan hierarki objek.

Penyelesaian

Untuk menangani isu ini, kami boleh menggunakan assign() fungsi:

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

Penggunaan

Mari kita pertimbangkan contoh:

var obj = {};
var propName = "foo.bar.foobar";

assign(obj, propName, "Value");
Salin selepas log masuk

Penjelasan

  1. Prop mula-mula ditukar menjadi tatasusunan menggunakan kaedah split("."), menghasilkan ["foo", "bar", "foobar"].
  2. Elemen pertama tatasusunan, foo, diperuntukkan kepada obj.
  3. The Object.prototype.toString.call(obj [e]) === "[objek Objek]" menyemak sama ada obj.foo ialah objek. Jika benar, kami menetapkan obj.foo kepada obj[e].
  4. Jika obj.foo bukan objek, kami mencipta objek baharu dan menetapkannya kepada obj.foo.
  5. Kami mengulangi proses untuk bar dan foobar, akhirnya menetapkan obj.foo.bar.foobar kepada nilai yang dihantar ke dalam assign() fungsi.

Dengan menggunakan fungsi assign(), anda boleh menetapkan nilai secara dinamik kepada sifat pada sebarang tahap kedalaman, walaupun anda hanya mempunyai nama sifat sebagai rentetan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Nilai Secara Dinamik kepada Objek JavaScript Bersarang Dalam Menggunakan Hanya Nama Harta Rentetan?. 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