通过字符串引用嵌套的json对象属性

时间:2019-06-17 20:44:43

标签: javascript angularjs

我知道我在这里遗漏了一些明显的东西,但是说我有一个看起来像这样的JSON对象:

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

我还有一个字符串值:

var prop = 'levelOne.levelTwo';

我正在尝试确定是否有基本方法可以执行以下操作:

var x = testObj[prop];

那是行不通的,但是有什么办法可以做到这一点吗?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

即您可以执行const a = testObject["levelOne"],但不能尝试。 (Docs

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