2017-06-16 11 views
2

キーの配列を使用してネストされたオブジェクトから値を取得するにはどうすればよいですか?JavaScript - キー配列を使用してネストされたオブジェクトから値を取得

// my sample object 
var obj = { 
    type   : "Purchase", 
    category  : "Apartment", 
    categoryOptions : { 
     apartment : { 
      floors : { 
       type  : "number", 
       value  : null, 
       placeholder : "Total Floors" 
      }, 
     }, 
    }, 
} 
var keysArray = ["value", "floors", "apartment", "categoryOptions"] 

これを達成するために私はarray.reduceRightを使用しようとしましたが機能しませんでした。

var roadToValue = keysArray.reduceRight(
    function(previousValue, currentValue){ 
     return previousValue + "[" + currentValue + "]" ; 
    } 
); 
// above function results in a single string like 
// "categoryOptions[apartment][floors][value]" 
// which off-course can't be used as object key 
// and obj[roadToValue] results in 'undefined' 

ので、私はここにobjに渡すために適切なキーを取得することができますどのような方法がある:ここ

は、私が試した何ですか?

+0

資本金:問題は、しかし、あなたがinitialValueとして、あなたのオブジェクトを渡すと、二乗ブラケット表記を使用する必要がある、あなたは文字列を作成したことありますか? '' Apartment "!=" apartment "' – corn3lius

+0

@ corn3liusオハイオ州の質問を書いています。私の問題はまだ残っています。私は質問を更新します。 – Taxellool

答えて

4

あなたは間違いなくこれにreduceRightを使用できます。

var obj = {"type":"Purchase","category":"Apartment","categoryOptions":{"apartment":{"floors":{"type":"number","value":null,"placeholder":"Total Floors"}}}} 
 
var keysArray = ["value", "floors", "apartment", "categoryOptions"] 
 

 
var value = keysArray.reduceRight((r, e) => r[e] || r, obj) 
 
console.log(value)

+0

私は 'undefined'チェックを含んでいますが、エラーが発生したオブジェクトを返します。 – Christoph

関連する問題