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

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

Patricia Arquette
發布: 2024-12-24 11:02:14
原創
410 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板