给定属性键的路径,如何检索它?

时间:2017-06-14 15:26:42

标签: javascript node.js ecmascript-6

考虑我有一个对象myObj 我有一个字符串表示其中某些属性的路径:foo.bar

从我的对象中获取它的最佳方法是什么?

如果我知道前面的字符串,我会myObj.foo && myObj.foo.bar安全地获取它

一个简单的解决方案是将字符串'foo.bar'.split('.')拆分而不是循环遍历它。

但我确信有更好的方法

这是其他问题的重复。他们提供了一个很好的解决方案:

给定pathobj以这种方式获取属性值

path.split('.').reduce((o, i) => o[i], obj)

1 个答案:

答案 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"