我有一些拥有x个嵌套对象的对象:
let obj = {
nestedObject: {
key: value
}
}
或
let obj2 = {
nestedObject2: {
nestedObject3: {
key2: value2
}
}
}
等
获取这两个对象的值并不困难:
obj.nestedObject.key
obj['nestedObject']['key]
或
obj2.nestedObject2.nestedObject3.key2
obj2['nestedObject2']['nestedObject3']['key2']
这应该动态发生,但是我不知道该怎么实现。 我得到了上面结构的随机对象,还有一个字符串,告诉我在哪里可以找到值。对于上面示例中的obj2,我将获得字符串
“ nestedObject2.nestedObject3.key2”
如何使用此信息获取正确的值?上面的两种策略不再起作用,并且像
这样的简单方法obj2 ['nestedObject2.nestedObject3.key2']
不幸的是没有工作。
答案 0 :(得分:1)
您可以使用句点字符的分隔符来分割字符串,然后进行缩减以找到合适的属性,每次迭代都将其降级。
str.split(".").reduce((a, v) => (a = a[v], a), parent_object);
let o = {
nestedObject2: {
nestedObject3: {
key2: "a key"
}
}
},
str = "nestedObject2.nestedObject3.key2";
let ref = str.split(".").reduce((a, v) => (a = a[v], a), o);
console.log(ref);