2016-08-01 8 views
0

Ich habe gebastelt und suchte nach Schleifen usw., dachte dann, es gibt wahrscheinlich einen schnelleren Weg, dies zu tun. Dann habe ich in den lodash docs verloren ...Ersetze das benannte Objekt durch die Eigenschaften dieses Objekts

Wie dem auch sei, ich möchte über den folgenden objekt-

{ 
    stuff: { 
    thing1: 'value1', 
    thing2: 'value2', 
    thing3: 'value3' 
    }, 
    something: 'value4' 
} 

-und Rückkehr laufen:

{ 
    thing1: 'value1', 
    thing2: 'value2', 
    thing3: 'value3', 
    something: 'value4' 
} 

Das heißt, möchte ich Beseitigen Sie die stuff Ebene und alles als Geschwister haben. Auf eine einfache/kurze Art, meine ich. Ich versuchte _.flatten und ._flattenDepth, aber sie arbeiten nur mit Arrays (gibt ein leeres Array zurück).

Danke

Antwort

1

Ich denke, Ihre beste/einzige Wette ist eine Schleife.

function flattenObject(obj, res) { 
    res = res ? res : {}; 
    Object.keys(obj).forEach(function(d) { 
     if (typeof obj[d] === 'object') return flattenObject(obj[d], res); 
     res[d] = obj[d]; 
    }); 

    return res; 
} 


console.log(flattenObject(a)); 
+0

Okay, danke! Um was geht es? – heydon

+1

und es wird in jeder Tiefe funktionieren @ heydon – baao

+1

Res ist das resultierende Objekt. In der ersten Zeile der Funktion überprüfe ich nur, ob Res übergeben wurde (bereits ein Objekt), und wenn nicht, erstelle ich ein neues, leeres. @ heydon – baao

Verwandte Themen