按字符串引用嵌套的JSON对象属性

3

我知道我在这里忽略了一些显而易见的东西,但是假设我有一个长得像这样的JSON对象:

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

我也有一个字符串值:

var prop = 'levelOne.levelTwo';

我想确定是否有基本的方法可以实现这样的功能:

var x = testObj[prop];

这种方法行不通,但是有没有其他等效的方法呢?

2个回答

5

没有简单的方法(例如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);


太棒了,谢谢 - 我知道一定有一个简单的方法来做到这一点。这正是我想要的。 - monkeyWithAMachinegun

0

您可以使用动态键来访问对象中的属性,但不能多层嵌套。

例如,您可以执行const a = testObject["levelOne"],但不是您尝试的那样。(文档)

然而,有一些辅助库提供了函数来实现这一点。一个例子是lodash.get函数


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接