2016-10-15 4 views
-1

Ich bin nicht sicher, ob ich die richtige Frage, aber hier geht es. Ich bin eine API schlagen und ein Javascript-Objekt bekommen, die wie die folgendenZugang dynamische Schlüssel in Javascript-Objekt

x: { 
    id: 1, 
    username: 'Ryan', 
    picture: 151 
} 

Im Speichern dieses Objekts in einem myObj konst aussieht. Ich möchte auf die Daten innerhalb von x zugreifen, aber das Problem tritt jedes Mal auf, wenn ich auf die API klicke, ändert sich die Namen. Die Objektschlüssel innen x gleich bleiben, aber manchmal ist x y, a, l, b, usw.

Gerade jetzt Im

versuchen
myObj.x 

aber sobald x y ist, würde ich es ändern zu myObj.y stattdessen. Wie kann ich auf die Eigenschaften in diesem dynamischen Objekt zugreifen?

LÖSUNG:

myObj[Object.keys(myObj)[0]] 
+0

Wenn es zu einer bestimmten Zeit gibt es nur einen Schlüssel dh, entweder x, y, a usw. können Sie myObj [Object.keys (myObj) [0]] –

+0

Was genau erhalten Sie, wenn Sie die API treffen ..? – Redu

+1

Ich stimme für das Schließen dieser Frage als Off-Topic ab, weil der Autor eine Lösung gefunden hat. –

Antwort

0

Sie müssen nur die Eigenschaft testen, die eine subproperty id enthält

var obj = { 
    a: { 
     id: 1, 
     username: 'Ryan', 
     picture: 151 
    }, 
    b: { 
     ident: 2, 
     firstName: 'jim', 
     movie: 321 
    } 
}; 

var x = obj[Object.keys(obj).filter(item => obj[item].id)]; 
console.log(x); // { id: 1, username: 'Ryan', picture: 151 } 
0

nicht Object.keys(myObj)[0] Verwenden Sie, wenn es mehr als einen Schlüssel, da die Reihenfolge der zurückgegebenen ist Array ist implementierungsabhängig.

Stattdessen sollten Sie so etwas wie

var x = getCurrentPropertyName(); // "x" 
// ... 
myObj[x]; 

verwenden Wo getCurrentPropertyName irgendwie den aktuellen Namen der gewünschten Eigenschaft zurückgibt. Wenn Sie das nicht wissen, haben Sie ein ernstes Problem mit Ihrem Code.