如何在 JavaScript 中给定其字符串名称来设置对象属性(属于...的对象属性)?

新手上路,请多包涵

假设我们只给定

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

我们如何将属性 obj.foo.bar.foobar 设置为某个值(比如“hello world”)?所以我想实现这一点,而我们只有字符串中的属性名称:

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

原文由 chtenb 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 418
2 个回答
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;
}

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

assign(obj, propName, "Value");

原文由 VisioN 发布,翻译遵循 CC BY-SA 3.0 许可协议

我知道这是一个旧的,但我在答案中只看到自定义函数。

如果您不介意使用库,请查看 lodash _.set_.get 函数。

原文由 Michał Frączkiewicz 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题