2017-05-18 18 views
1

でプロパティを検索obj .IがあっIまでobj.parent.parent.propertyで検索し、その..にない.IF obj.parent.propertyで検索(undefined)そのことがあった場合にプロパティobj.propertyを検索する必要が言いますプロパティが存在する場合は、そうでない場合は、親キーで再びiterを呼び出して、チェックすることにより、再帰的なアプローチを使用することができ このような..は、再帰的に、私はオブジェクトを持っているオブジェクト

obj.property      [undefined] 
obj.parent.property     [undefined] 
obj.parent.parent.property   [undefined] 
obj.parent.parent.parent.property [found] .Terminate here. 

答えて

0

そのプロパティを取得します。

function iter(object) { 
 
    return 'property' in object ? object.property : iter(object.parent); 
 
} 
 

 
var object = { parent: { parent: { parent: { parent: { property: 42 } } } } }; 
 

 
console.log(iter(object));

0

あなたは各レベルでのプロパティをチェックrecrusivelyする必要があります。この回答を確認してください:あなたが指定したプロパティのために、すべてのネストされたオブジェクトを検索し、その値を返しますクレート再帰関数へfor...inループを使用することができます

Iterate through object properties

1

var obj = {lorem: {ipsum: {a: {c: 2}, b: 1}}} 
 

 
function getProp(obj, prop) { 
 
    for (var i in obj) { 
 
    if (i == prop) return obj[i] 
 
    if (typeof obj[i] == 'object') { 
 
     var match = getProp(obj[i], prop); 
 
     if (match) return match 
 
    } 
 
    } 
 
} 
 

 
console.log(getProp(obj, 'b'))

関連する問題