2017-06-14 17 views
-1

考慮我有一個對象myObj 我已經代表路徑裏面的一些屬性的字符串:foo.bar鑑於屬性鍵的路徑,如何檢索它?

什麼是從我的對象得到它的最佳方式?

如果我知道未來的字符串,我會做myObj.foo && myObj.foo.bar把它安全地

一個簡單的解決辦法是分割字符串'foo.bar'.split('.')和環比超過它。

但我敢肯定有一個更好的辦法


它的其他問題重複。他們提供了一個很好的解決方案:給

一個pathobj獲得屬性值這樣

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

回答

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"