【问题标题】:Is it possible to change nested object properties with this syntax [duplicate]是否可以使用此语法更改嵌套对象属性[重复]
【发布时间】:2017-07-19 10:21:26
【问题描述】:

假设你有这个对象:

myObj = { foo: { bar : 123, baz: 456 } };

要编辑 bar 的值,您可以这样做:

myObj['foo']['bar'] = 789

但是如果你有一个方法可以像这样改变特定对象的属性呢:

myObj[key] = value

如果您需要使用它并且想在myObj 对象中编辑bar,是否可以使用该代码?

我试过了:

myObj["foo"."bar"] = 789;
myObj["foo"["bar"]] = 789;

但它不起作用。有可能吗?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    纯 JavaScript 不允许您使用简单的字符串访问嵌套属性。

    替代品可以是 lodash:

    _.get(myObj, 'foo.bar'); // 123
    
    _.set(myObj, 'foo.bar', 789);
    

    【讨论】:

    • 如果_ 可以做到,还有一种“纯Javascript”的方式来做到这一点(尽管使用更多代码)...
    • @deceze 我认为我们在这里讨论的是最简单的解决方案。
    • 包含一个额外的库不一定是最简单的解决方案……
    • 感谢 Hsz,但我确实希望使用纯 Javascript 方式,不幸的是,lodash 不是项目中的选项。
    猜你喜欢
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多