2016-08-20 1 views
0

Ich habe json:Dynamisches Objekt in JavaScript-Array hinzufügen

var obj = '{"Form":[],"Provider":[]}'; 

schiebe ich die Daten mit variabler Wert dynamische Objekte zu machen:

var pName = 'Tester'; 
var data = { 
    pName :["testing"] 
}; 
console.log(obj['Provider'].push(data)); 

Aber das fügt pName als Variablennamen, aber nicht Variablenwert das ist Tester, ich versuchte mit + pName + das funktioniert auch nicht.

Returns:

{"Form":[],"Provider":[{"pName":["Testing"]}]} 

Jede Hilfe würde geschätzt.

+0

Sie nicht eine Eigenschaft wie 'Provider' eines JSON-String nehmen; Sie müssen zuerst den String mit 'JSON.parse()' in ein JavaScript-Objekt konvertieren (oder ihn als JavaScript-Objektliteral angeben). –

Antwort

2

Sie müssen die Syntax [] in der Nähe des Eigenschaftsnamens verwenden. Sie wertet den Ausdruck in [] aus und gibt den Wert zurück.

Siehe das Beispiel. Hier ist die data's Eigenschaft mit dem Namen 'Tester'.

var obj = {"Form":[],"Provider":[]}; 
 

 
var pName = 'Tester'; 
 
var data = { 
 
    [pName] :["testing"] 
 
}; 
 

 
console.log(data.pName); // undefined 
 
console.log(data.Tester); // OK 
 

 
obj['Provider'].push(data); 
 

 
console.log(obj);

+0

Ich bin dabei, diesen zu beantworten. Haha. Großer Job, Sir. Prost! –

+0

Wenn Sie die Syntax "[Schlüsselname]: Wert" einführen, sollten Sie zumindest den richtigen Namen für dieses Konstrukt angeben. Um genau zu sein, gibt diese Syntax den Wert nicht zurück; ** verwendet ** den Wert als Schlüsselname. Schließlich haben Sie auf das Problem des OP mit dem Versuch verzichtet, eine JSON-Zeichenfolge zu bearbeiten, ohne sie zuvor in ein JavaScript-Objekt zu konvertieren. –

Verwandte Themen