この質問はかなり古いものですが、「javascript get object from string」というクエリのGoogleでの上位の結果であるため、ドット表記を使用したより長いオブジェクトパスの手法を共有したいと思いました。
次の場合:
var foo = { 'bar': { 'alpha': 'beta' } };
次のような文字列から「alpha」の値を取得できます。
var objPath = "bar.alpha";
var alphaVal = objPath.split('.')
.reduce(function (object, property) {
return object[property];
}, foo);
// alphaVal === "beta"
グローバルの場合:
window.foo = { 'bar': { 'alpha': 'beta' } };
window
forとして渡すだけinitialValue
ですreduce
:
var objPath = "foo.bar.alpha";
var alphaVal = objPath.split('.')
.reduce(function (object, property) {
return object[property];
}, window);
// alphaVal === "beta"
基本的reduce
に、最初のオブジェクトをとして渡すことにより、オブジェクトメンバーをトラバースするために使用できますinitialValue
。
Array.prototype.reduceのMDN記事