2016-05-23 2 views
0

ネストされたオブジェクトの最後の項目を取得し、そして最後の項目は常に数、例のプロパティです:私は、本当のネストされたオブジェクトで、時には10のレベルの深働いている

let myObject = { 

    levelOne: { 
    levelTwo: { 
     levelThree: 1 
    } 
    } 
}; 

が、私があれば知りたいのですがプロパティの正確な名前を知らずに、最後の項目を取得して1を増やすことができます。

ありがとうございました。

+0

はい、その可能性を、 –

+0

に再帰あなたは再帰を試みたことがありますか? – Bergi

+0

私はあなたが "最後"ではなく "最奥"を意味すると思います - オブジェクトのプロパティは注文されません。 – Bergi

答えて

0

これは最適化することができ、おそらくhasOwnPropertyの使用が使用されるべきであることに注意してください。

また、しばらく再帰を切り替えることもできます。

これは単なる例ではありません。

ここに行く:以下

let myObject = { 
    levelOne: { 
    levelTwo: { 
     levelThree: 1 
    } 
    } 
}; 

function getLast(object){ 
    if (typeof object !== 'object'){ 
    return object; 
    } 
    for (prop in object){ 
    return getLast(object[prop]) 
    } 
} 

console.log(getLast(myObject)); 

https://jsfiddle.net/o18hde10/1/

0

は、あなたの鍵をループに下線使用して、いくつかの擬似コードです。入力データに応じて変更する必要があります。ここで

function findObject(){ 
    _.some(myobject, function(val){ 
     if(_.isObject(val)){ 
      findObject(val); 
     } 
     if(_.isNumber(val)){ 
      return val; 
     } 
    }); 
} 
0

は内部オブジェクトの機能を取得です:ために、

function innerObject(o) { 
    return Object.keys(o).reduce(function (r, k) { 
    return typeof o[k] === 'object' ? innerObject(o[k]) : (r[k] = o[k], r) 
    }, {}) 
} 
関連する問題