【问题标题】:JavaScript set nested object (tree node) property dynamicallyJavaScript 动态设置嵌套对象(树节点)属性
【发布时间】:2021-08-25 00:57:56
【问题描述】:

假设有一个嵌套对象:

const nested = {
    foo: {
        bar: {
            baz: [
                {t1: {id: 1, _value: 1}},
                {t2: {id: 2, _value: 2}}
            ],
            _value: 3
        },
        nuxt: {
            _value: 4
        },
        _value: 5
    }
}

如何在后续签名的函数中动态设置_value的key为想要的数字?

动态,我的意思是有一个函数,它接受像"foo|nuxt""foo|bar|baz|t{n}|id:1|" 这样的字符串。

例如:

function setValue({path, key, value}, target) {}

调用签名为setValue({path: "foo|nuxt", key:"_value", value: 100}, nested}

附:解析path 没有问题。

谢谢!

【问题讨论】:

  • lodash 有set
  • 感谢马特的提示!赞赏。

标签: javascript object dynamic variable-assignment


【解决方案1】:

为 vanilla JS 解决了这个问题,但是,这在 Svelte 中无法按预期工作。

谢谢大家。

function setValue({path, key, value}, target) {
    let tokens = path.split("|");

    let oPtr = target;

    tokens.map(token => {
        if(oPtr.hasOwnProperty(token)) {
            oPtr = oPtr[token];
        }
    });

    oPtr[key] = value;

}

【讨论】:

    猜你喜欢
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 2011-10-17
    相关资源
    最近更新 更多