2016-05-23 17 views
0

ich mit echten verschachtelten Objekten gerade arbeitete, manchmal 10 Ebene tief, und der letzte Punkt ist immer eine Eigenschaft mit einer Nummer, zB:Erhalten letztes Element von verschachteltem Objekt

let myObject = { 

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

Ich mag würde wissen, ob ist möglich, ohne den genauen Namen der Eigenschaften zu wissen, erhalten Sie den letzten Artikel und erhöhen Sie die Zahl um 1.

Vielen Dank.

+0

Ja, es ist möglich, mit für, in und Rekursion –

+0

Haben Sie versucht Rekursion? – Bergi

+0

Ich denke, du meinst "innerste", nicht "letzte" - Objekteigenschaften sind nicht geordnet. – Bergi

Antwort

0

Denken Sie daran, dies könnte optimiert werden und eine Verwendung von hasOwnProperty sollte wahrscheinlich verwendet werden.

Sie können die Rekursion auch auf eine Weile umschalten.

Dies ist nicht die beste Lösung nur ein Beispiel.

Hier gehen Sie:

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

Im Folgenden einige Pseudo-Code ist eine Schleife durch Ihre Tasten unterstreichen. Sie müssen es abhängig von Ihren Eingabedaten ändern.

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

Hier Funktion erhalten inneres Objekt:

function innerObject(o) { 
    return Object.keys(o).reduce(function (r, k) { 
    return typeof o[k] === 'object' ? innerObject(o[k]) : (r[k] = o[k], r) 
    }, {}) 
}