【问题标题】:Reference nested json object property by string [duplicate]按字符串引用嵌套的json对象属性[重复]
【发布时间】:2019-10-31 11:35:52
【问题描述】:

我知道我在这里遗漏了一些明显的东西,但我说我有一个如下所示的 JSON 对象:

testObj = {
            levelOne: {
                       levelTwo: []
            }
}

我还有一个字符串值:

var prop = 'levelOne.levelTwo';

我正在尝试确定是否有任何方法可以基本上做这样的事情:

var x = testObj[prop];

这不起作用,但有什么方法可以做到这一点?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    这样做没有简单的方法(例如testObj[prop]),但reduce 函数非常适合:

    let nestedProp = (obj, path) =>
    	path.split('.').reduce((obj, prop) => obj[prop], obj);
    
    let x = nestedProp({levelOne: {levelTwo: [5]}}, 'levelOne.levelTwo');
    console.log(x);

    【讨论】:

    • 太棒了,谢谢 - 我知道必须有一个简单的方法来做到这一点。这正是我想要的。
    【解决方案2】:

    您可以使用动态键来访问对象中的属性,但不能访问多个级别。

    即你可以做const a = testObject["levelOne"],但不是你尝试过的。 (Docs)

    但是,有一些辅助库具有执行此操作的功能。一个例子是lodash.get function

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 2016-01-09
      • 2021-05-09
      • 2021-12-06
      • 2019-03-31
      • 2020-08-09
      • 2014-04-11
      • 2020-11-03
      • 2016-03-19
      相关资源
      最近更新 更多