考虑我有一个对象myObj
我有一个字符串表示其中某些属性的路径:foo.bar
从我的对象中获取它的最佳方法是什么?
如果我知道前面的字符串,我会myObj.foo && myObj.foo.bar
安全地获取它
一个简单的解决方案是将字符串'foo.bar'.split('.')
拆分而不是循环遍历它。
但我确信有更好的方法
这是其他问题的重复。他们提供了一个很好的解决方案:
给定path
和obj
以这种方式获取属性值
path.split('.').reduce((o, i) => o[i], obj)
答案 0 :(得分:0)
是的,这听起来像是最好的方式。您可以创建一个完全符合这一要求的辅助方法,但是语言或标准库中没有任何内容可以使事情变得简单。一个简单的解决方案是将字符串
'foo.bar'.split('.')
拆分而不是循环遍历它。
function getFromPath(obj, path) {
var current = obj;
for(let piece of path.split('.')) {
current = current[piece];
}
return current;
}
用法:
getFromPath({foo: {bar: "hello"}}, "foo.bar"); // "hello"