首頁 >web前端 >js教程 >如何使用字串名稱設定嵌套 JavaScript 物件屬性?

如何使用字串名稱設定嵌套 JavaScript 物件屬性?

Patricia Arquette
Patricia Arquette原創
2024-12-24 11:02:14374瀏覽

How Can I Set Nested JavaScript Object Properties Using String Names?

在JavaScript 中使用字串名稱設定巢狀物件屬性

在JavaScript 中,存取和修改物件屬性對於管理資料至關重要。但是,如果您僅以字串形式提供屬性名稱而不是其直接鍵序列,該怎麼辦?當屬性作為使用者輸入動態產生或接收的情況下,可能會發生這種情況。

考慮以下物件:

var obj = {};

和屬性名稱:

var propName = "foo.bar.foobar";

設定 obj.foo.bar.foobar的值,傳統上您可以使用以下命令語法:

obj.foo.bar.foobar = "hello world";

但是,這種方法需要手動遍歷鏈中的每個屬性,這可能會變得繁瑣且容易出錯,尤其是對於深度嵌套的屬性。

遞歸屬性賦值函數

為了解決這個挑戰,可以實作一個名為allocate 的遞歸函數來簡化賦值過程:

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;
}

此函數接受一個物件(obj)、一個字串形式的屬性名稱(prop)以及一個要賦給該屬性的值(value)。它遞歸地遍歷物件層次結構並將適當的屬性設為指定值。

用法

使用allocate 設置obj.foo.bar.foobar 的值function:

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

assign(obj, propName, "Value");

此代碼將創建必要的嵌套屬性並設定obj.foo.bar.foobar 為「Value」。

透過利用遞歸屬性賦值函數,您可以使用字串名稱動態存取和修改 JavaScript 中的巢狀物件屬性,為複雜資料結構提供靈活且可擴展的解決方案.

以上是如何使用字串名稱設定嵌套 JavaScript 物件屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn